2012-09-25 59 views
4

我想用OpenCV创建一个Qt Android应用程序。我在Ubuntu 12.04(64位)上使用Necessitas Qt Creator和OpenCV 2.4.0 Android二进制包。目前我只是创建一个OpenCV Mat对象。Qt与OpenCV的Android项目 - tbb编译错误

但是当我编译项目我得到一些“未定义的引用”错误的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 
... 

我,包括我的* OpenCV的库(也libtbb.a)的.pro/qmake文件:

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 

为什么OpenCV不能找到tbb函数?谢谢!

+0

可能的重复[如何将OpenCV集成到Qt Creator Android项目](http://stackoverflow.com/questions/27562311/how-to-integrate-opencv-into-qt -creator-Android的项目) – sashoalm

回答

2

库的顺序对链接很重要。尝试重新排序行方式如下:

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 
0

你可以试试下面的方法......它为我

副本libopencv_java.so到QT_INSTALLDIR/5.1.1/android_armv7/lib目录 然后添加以下到.pro LIBS + = -lopencv_java