摇篮无法找到OpenCV的库与调试NDK [英] Gradle can't find OpenCV Libraries for debugging with 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屋!