Android Studio NDK链接器错误未定义引用'cv :: _ OutputArray :: _ OutputArray(cv :: Mat&)'

恢弘志士之气,不宜妄自菲薄。这篇文章主要讲述Android Studio NDK链接器错误未定义引用' cv :: _ OutputArray :: _ OutputArray(cv :: Mat&)' 相关的知识,希望能为你提供帮助。
我正在开发一个使用NDK的android项目,其中我使用了opencv来捕获和捕获图像效果。这是我的Android.mk的样子:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)include path/to/OpenCV.mkLOCAL_MODULE:= ScannerLOCAL_SRC_FILES := scan.cppLOCAL_LDLIBS+= -lz -lm -llog -landroid -ldl -lstdc++LOCAL_LDFLAGS +=-ljnigraphics -fexceptions -std=c++11 -L$(LOCAL_PATH)/sdk/native/jni/libs/armeabi-v7a -L$(LOCAL_PATH)/sdk/native/jni/3rdparty/libs/armeabi-v7a -I$(LOCAL_PATH)/sdk/native/jni/include -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/core -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/calib3d -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/contrib -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/features2d -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/flann -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/highgui -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/imgproc -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/legacy -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ml -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/objdetect -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ocl -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/photo -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/stitching -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/superres -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/ts -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/video -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2/videostab -I$(LOCAL_PATH)/sdk/native/jni/include/opencv2LOCAL_STATIC_LIBRARIES := opencv_shape opencv_stitching opencv_objdetect opencv_superres opencv_videostab opencv_calib3d opencv_features2d opencv_highgui opencv_videoio opencv_imgcodecs opencv_video opencv_photo opencv_ml opencv_flann opencv_imgproc opencv_core opencv_ts IlmImf libjasper libjpeg libpng libtiff libwebp tbbinclude $(BUILD_SHARED_LIBRARY)

虽然我链接所有opencv库并指定正确的路径(通过chaning路径验证)我收到以下链接器错误:
../sdk/native/jni/include/opencv2/core/mat.hpp:335: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat& )' jni/scan.cpp:33: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const& )' jni/scan.cpp:33: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat& )' jni/scan.cpp:65: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const& )' jni/scan.cpp:65: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const& )' jni/scan.cpp:72: error: undefined reference to 'cv::_InputArray::_InputArray(cv::Mat const& )' jni/scan.cpp:48: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat& )' jni/scan.cpp:51: error: undefined reference to 'cv::_OutputArray::_OutputArray(cv::Mat& )' jni/scan.cpp:58: error: undefined reference to 'cv::findContours(cv::_OutputArray const& , cv::_OutputArray const& , int, int, cv::Point_< int> )' ..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray' ..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function ..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray' ..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function jni/scan.cpp:162: error: undefined reference to 'cv::findContours(cv::_OutputArray const& , cv::_OutputArray const& , int, int, cv::Point_< int> )' ..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray' /Users/mtsindia/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function ..sdk/native/jni/include/opencv2/core/mat.hpp:276: error: undefined reference to 'vtable for cv::_OutputArray' ..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function jni/scan.cpp:261: error: undefined reference to 'vtable for cv::_InputArray' ..Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function jni/scan.cpp:296: error: undefined reference to 'cv::Exception::Exception(int, std::string const& , std::string const& , std::string const& , int)' jni/scan.cpp:297: error: undefined reference to 'cv::Exception::Exception(int, std::string const& , std::string const& , std::string const& , int)' jni/scan.cpp:298: error: undefined reference to 'cv::Exception::Exception(int, std::string const& , std::string const& , std::string const& , int)' jni/scan.cpp:299: error: undefined reference to 'cv::Exception::Exception(int, std::string const& , std::string const& , std::string const& , int)'

这是link,我下载了扫描仪应用程序演示并在scan.cpp文件中进行了修改并尝试重建库。我在Android studio中创建了ndk-build作为外部工具,也验证了ndk路径。我在这里错过了什么?任何帮助,将不胜感激。
答案固定它。我不知道它是如何得到修复的确切原因。我恢复了我在Android.mk,Application.mk和OpenCV.mk中所做的所有更改,现在我的Adnroid.mk看起来像这样:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS) OPENCV_INSTALL_MODULES:=on include $(LOCAL_PATH)/sdk/native/jni/OpenCV.mkLOCAL_MODULE:= Scanner LOCAL_SRC_FILES := scan.cpp LOCAL_LDLIBS+= -lm -llog -landroid LOCAL_LDFLAGS += -ljnigraphics include $(BUILD_SHARED_LIBRARY)

和Application.mk:
APP_STL := stlport_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := all APP_PLATFORM := android-14

这是我的OpenCV.mk的样子:
https://pastebin.com/zuqM6tbu
【Android Studio NDK链接器错误未定义引用' cv :: _ OutputArray :: _ OutputArray(cv :: Mat&)' 】我想我已经错过了正确的路径或我的库文件(.so和.a)可能与包含的头文件版本不同。如果有人有其他想法,请发表评论。

    推荐阅读