Qt project for Android with OpenCV compilation errors - tbb

I want to create an Android Qt application with OpenCV. I am using Necessitas Qt Creator and the OpenCV 2.4.0 binary package for Android on Ubuntu 12.04 (64-bit). For now, I'm just creating an OpenCV Mat object.

But when I compile the project, I get some undefined reference errors for tbb:

> /home/kolbe/src/android-sdk-linux/OpenCV-2.4.0/libs/armeabi-v7a/libopencv_core.a(stat.cpp.o):-1: In function tbb::interface6::internal::start_for<tbb::blocked_range<int>, cv::BatchDistInvoker, tbb::auto_partitioner>::execute(): stat.cpp:-1: error: undefined reference to tbb::internal::allocate_continuation_proxy::allocate(unsigned int) const stat.cpp:-1: error: undefined reference to tbb::internal::allocate_continuation_proxy::allocate(unsigned int) const ... 

I include the OpenCV libraries (also libtbb.a) in my * .pro / qmake file:

 ANDROID_OPENCV = /home/kolbe/src/android-sdk-linux/OpenCV-2.4.0 LIBS += \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_calib3d.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_flann.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_objdetect.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_contrib.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_video.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_ml.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_legacy.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_highgui.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjpeg.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibpng.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibtiff.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjasper.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/libtbb.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_ts.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_imgproc.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_core.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_androidcamera.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_features2d.a INCLUDEPATH += $$ANDROID_OPENCV/include/opencv/ INCLUDEPATH += $$ANDROID_OPENCV/include/opencv2/ INCLUDEPATH += $$ANDROID_OPENCV/include/ CONFIG+=link_pkgconfig PKGCONFIG+=opencv 

Why can't OpenCV find tbb functions? Thanks!

+4
source share
2 answers

The order of the libraries is very important for communication. Try changing the order of the lines as follows:

 LIBS += \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_contrib.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_legacy.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_ml.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_objdetect.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_calib3d.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_video.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_features2d.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_highgui.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_androidcamera.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_flann.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_imgproc.a \ $$ANDROID_OPENCV/libs/armeabi-v7a/libopencv_core.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjpeg.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibpng.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibtiff.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/liblibjasper.a \ $$ANDROID_OPENCV/share/OpenCV/3rdparty/libs/armeabi-v7a/libtbb.a 
+2
source

You can try the following method ... It worked for me

copy libopencv_java.so to QT_INSTALLDIR / 5.1.1 / android_armv7 / lib then add the following to .pro LIBS + = -lopencv_java

0
source

Source: https://habr.com/ru/post/1436151/


All Articles