解决android studio3 导入opencv后ndk-build编译遇到的问题
感谢将opencv4集成到android studio3.0平台,这个文章,帮助我解决了问题。
1NDK编译版本问题
android studio3 用ndk-build编译时会遇到如下问题
/build/core/add-application.mk:178: *** Android NDK: APP_STL gnustl_shared is no longer supported. Please switch to either c++_static or c++_shared. See https://developer.android.com/ndk/guides/cpp-support.html for more information. . Stop.
这是因为android studio3中的NDK版本太高,NDK16之后就不支持gnustl_shared的编译了,所以按照上面这条提示,应该换成c++_static 或者 c++_shared编译。
2 opencv代码问题
如果你正在使用opencv中face-detection这个例子。解决了上面第一个问题之后,换用c++_shared编译编译发现如下保存:
[armeabi-v7a] SharedLibrary : libface_detection.so
G:/software/android/projects/opencv/CameraTutorial/app/src/jni/haar_detect.cpp:39: error: undefined reference to 'cv::CascadeClassifier::detectMultiScale(cv::_InputArray const&, std::__ndk1::vector<cv::Rect_<int>, std::__ndk1::allocator<cv::Rect_<int> > >&, double, int, int, cv::Size_<int>, cv::Size_<int>)'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [G:/software/android/projects/opencv/CameraTutorial/app/src/obj/local/armeabi-v7a/libface_detection.so] Error 1
这是因为我使用的是opencv345,opencv是用的gnustl_shared编译的,所以代码会有各种报错。
解决办法是使用opencv4.0。从官网下载
下面写个程序实验
这是我的文章,赶快尝试吧
android studio3导入opencv4人脸识别例程安卓项目工程