我试图在Qt中使用Android中的OpenCV,但是我无法在Qt中成功链接它,我在side libraries(如libjpeg,libtegra_hal等)上收到了一些未定义的引用错误。我用this SO answer作为参考指南。无法链接Qt中的OpenCV Android
这是我的.pro文件 -
INCLUDEPATH += "$$PWD/../../External-Libraries/opencv-android/sdk/native/jni/include"
android {
# 3rd party libs
LIBS += \
-L"$$PWD/../../External-Libraries/opencv-android/sdk/native/3rdparty/libs/armeabi-v7a"\
-llibtiff\
-llibjpeg\
-llibjasper\
-llibpng\
-llibwebp\
-lIlmImf\
-ltbb\
-ltegra_hal
# opencv libs
LIBS += -L"$$PWD/../../External-Libraries/opencv-android/sdk/native/libs/armeabi-v7a"\
-lopencv_core\
-lopencv_highgui\
-lopencv_java3\
-lopencv_calib3d\
-lopencv_imgcodecs\
-lopencv_imgproc\
-lopencv_flann\
-lopencv_features2d\
-lopencv_ml\
-lopencv_objdetect\
-lopencv_photo\
-lopencv_shape\
-lopencv_stitching\
-lopencv_superres\
-lopencv_video\
-lopencv_videoio\
-lopencv_videostab
ANDROID_PACKAGE_SOURCE_DIR=$$PWD/android
}
我使用Qt 5.8和OpenCV 3.2.0。这些错误都是这种格式 -
libopencv_core.a:...错误:未定义引用(第三方库的一个方法)
这是一个例子 -
libopencv_core.a(arithm.cpp.o):arithm.cpp:function cv::hal::cmp8u(unsigned char const*, unsigned int, unsigned char const*, unsigned int, unsigned char*, unsigned int, int, int, void*): error: undefined reference to 'carotene_o4t::isSupportedConfiguration()'
其中carotene
是libtegra_hal.a
的函数。有没有办法将opencv库链接到第三方库?
谢谢。
编辑:
我可以成功地编译和运行OpenCV的3.1.0库,而不是3.2.0库。
我googled“未定义的引用'carotene_o4t :: isSupportedConfiguration”,有一些命中 - 请参阅http://stackoverflow.com/questions/41665655/what-is-carotene-o4t-and-why-does-it-引起程序使用的原因问题,它可能会给你一些指示。尝试禁用胡萝卜素按照[第三评论](http://stackoverflow.com/questions/41665655/what-is-carotene-o4t-and-why-does-it-cause-issues-with-compiling-a-program使用#comment70614446_41665655)建议。 – sashoalm
谢谢,会检查出来。问题是OpenCV 3.2.0具体 – FadedCoder