摇篮无法找到OpenCV的库与调试NDK [英] Gradle can't find OpenCV Libraries for debugging with NDK

查看:953
本文介绍了摇篮无法找到OpenCV的库与调试NDK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直只是执行 NDK的构建发展与C ++ code Android应用。我一直使用OpenCV的,所以在我的 Android.mk 有:

I've been developing Android apps with C++ code by just executing ndk-build. I've always used OpenCV, so in my Android.mk there was:

include $(CLEAR_VARS)

OPENCV_LIB_TYPE:=SHARED
OPENCV_CAMERA_MODULES:=off
OPENCV_INSTALL_MODULES:=on

include /Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/jni/OpenCV.mk

include $(OPENCV_PATH)

和它一直工作很好。

现在我要调试的C ++ code与Android工作室,我不得不做了一些的gradle修改。

Now I want to debug the C++ code with Android Studio, and I had to do some modifications in the gradle.

首先,在被的gradle没有看到包括文件,<一个href=\"http://stackoverflow.com/questions/23935193/gradle-ndk-to-specify-an-include-directive-in-generated-android-mk\">but我读计算器这个问题,它教会了我如何包含的文件。现在,当我尝试建立我的应用程序,我得到以下错误:

The first thing, the gradle wasn't seeing the include files, but I read this question in StackOverflow which taught me how to include the files. Now when I try to build my app, I get the following errors:

错误:(60)未定义引用'简历:: _ InputArray :: _ InputArray(CV ::垫常量和放大器;)

Error:(60) undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'

错误:(60)未定义引用'简历:: _ OutputArray :: _ OutputArray(CV ::垫&安培;)

Error:(60) undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'

错误:(60)未定义引用CV :: cvtColor(CV :: _ InputArray常量和放大器;,CV :: _ OutputArray常量和放大器;,INT,INT)

Error:(60) undefined reference to 'cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)'

错误:(62)未定义引用'简历:: _ InputArray :: _ InputArray(CV ::垫常量和放大器;)

Error:(62) undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const&)'

错误:(62)未定义引用'简历:: _ OutputArray :: _ OutputArray(CV ::垫&安培;)

Error:(62) undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'

错误:(62)未定义引用CV ::调整(CV :: _ InputArray常量和放大器;,CV :: OutputArray常量和放大器;,CV ::大小的人,双人,双,INT)

Error:(62) undefined reference to 'cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int)'

错误:(73)未定义引用'简历::垫:: T()const的

Error:(73) undefined reference to 'cv::Mat::t() const'

错误:(73)未定义引用'简历:: _ InputArray :: _ InputArray(CV :: MatExpr常量和放大器;)

Error:(73) undefined reference to 'cv::_InputArray::_InputArray(cv::MatExpr const&)'

错误:(73)未定义引用'简历:: _ OutputArray :: _ OutputArray(CV ::垫&安培;)

Error:(73) undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat&)'

这使我怀疑库都没有发现。
我尝试将其添加到我的 CFLAGS 为:

which makes me suspect that the libraries are not found. I try to add it in my cFlags as:

productFlavors {
    x86 {
        flavorDimension "abi"
        ndk {
            abiFilter "x86"
            stl "stlport_shared"
            cFlags "-std=c99 " +
                    "-fexceptions " +
                    "-I/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/jni/include " +
                    "-L/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/libs/x86 " +
                    "-lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab"
        }
    }
    arm {
        flavorDimension "abi"
        ndk {
            abiFilter "armeabi-v7a"
            stl "stlport_shared"
            cFlags "-std=c99 " +
                    "-fexceptions " +
                    "-I/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/jni/include " +
                    "-L/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/libs/armeabi-v7a " +
                    "-lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab"
        }
    }
}

我已经试过这还有:

I have tried this as well:

buildTypes {
    debug {
        debuggable true
        jniDebuggable = true
        ndk {
            abiFilter "x86"
            stl "stlport_shared"
            cFlags "-std=c99 " +
                    "-fexceptions " +
                    "-I/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/jni/include " +
                    "-L/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/libs/x86 " +
                    "-L/Users/rafaelruizmunoz/Desktop/Android_Tools/OpenCV-2.4.9-android-sdk/sdk/native/libs/armeabi-v7a " +
                    "-lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab"
    }
    release {
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

}

但错误依然存在。这就像它无法找到库。

but the errors are still there. It's like it can't find the libraries.

我应该怎么办呢?

感谢您提前。

推荐答案

您需要的 LDLIBS LDFLAGS 以指定链接库。随着的 exeprimental 的插件,我用下面的代码片段:

You need ldLibs and ldFlags to specify link libraries. With exeprimental plugin, I use the following fragment:

def appAbi = "armeabi-v7a"
def OpenCV_sdk = "~/opencv/sdk"
…
model { android.ndk {
…
    ldFlags += "-L$OpenCV_sdk/native/libs/$appAbi".toString()
    ldFlags += "-L$OpenCV_sdk/native/3rdparty/libs/$appAbi".toString()
    ldLibs += ['opencv_imgproc', 'opencv_core', 'opencv_hal', 'tbb']
} }

这篇关于摇篮无法找到OpenCV的库与调试NDK的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆