在Qt Android项目中使用OpenCV时的链接顺序

我正在尝试从Qt Creator构build的Qt Android项目中使用OpenCV。

我使用预先build立的OpenCV-2.4.10-android-sdk ,并根据它们的大小来判断,我链接到静态库。 现在我得到了链接错误,并且由于链接顺序在GCC中很重要,我怀疑他们是因为我的链接顺序不正确(这些库按字母顺序排列)。

那么考虑到我在Windows上进行交叉编译,那么正确的链接顺序是什么,以及如何find它?

这是从我的.pro文件:

 LIBS += -L"c:/Workspace/OpenCV-2.4.10-android-sdk/sdk/native/libs/armeabi-v7a"\ -L"c:/Workspace/OpenCV-2.4.10-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a" LIBS += \ -lopencv_core\ -lopencv_features2d\ -lopencv_flann\ -lopencv_highgui\ -lopencv_imgproc\ -lopencv_legacy\ -lopencv_ml\ -lopencv_objdetect\ -lopencv_ocl\ -lopencv_photo\ -lopencv_stitching\ -lopencv_superres\ -lopencv_ts\ -lopencv_video\ -lopencv_videostab\ -lIlmImf\ -llibjasper\ -llibjpeg\ -llibpng\ -llibtiff\ -ltbb 

这是我现在收到的错误:

 c:/Workspace/OpenCV-2.4.10-android-sdk/sdk/native/libs/armeabi-v7a/libopencv_core.a(parallel.cpp.o):parallel.cpp:function tbb::interface6::internal::start_for<tbb::blocked_range<int>, (anonymous namespace)::ProxyLoopBody, tbb::auto_partitioner const>::~start_for(): error: undefined reference to 'vtable for tbb::task' 

对于任何可能有同样问题的人来说,这是OpenCV的正确顺序。 我在c:\Workspace\OpenCV-2.4.10-android-sdk\sdk\native\jni\OpenCVmodulees_armeabi_v7a.cmake

 foreach(_expectedTarget libtiff libjpeg libjasper libpng IlmImf tbb opencv_core opencv_androidcamera opencv_flann opencv_imgproc opencv_highgui opencv_features2d opencv_calib3d opencv_ml opencv_objdetect opencv_video opencv_contrib opencv_photo opencv_java opencv_legacy opencv_ocl opencv_stitching opencv_superres opencv_ts opencv_videostab) 

当按照这个foreach给出的顺序编译时,他们就工作了。 我找不到任何工具,会给我正确的顺序,至少不是在Windows上的Android NDK。

所以这就是LIBS条目的样子:

 LIBS += -L"c:/Workspace/OpenCV-2.4.10-android-sdk/sdk/native/libs/armeabi-v7a"\ -L"c:/Workspace/OpenCV-2.4.10-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a" LIBS += \ -llibtiff\ -llibjpeg\ -llibjasper\ -llibpng\ -lIlmImf\ -ltbb\ -lopencv_core\ -lopencv_androidcamera\ -lopencv_flann\ -lopencv_imgproc\ -lopencv_highgui\ -lopencv_features2d\ -lopencv_calib3d\ -lopencv_ml\ -lopencv_objdetect\ -lopencv_video\ -lopencv_contrib\ -lopencv_photo\ -lopencv_java\ -lopencv_legacy\ -lopencv_ocl\ -lopencv_stitching\ -lopencv_superres\ -lopencv_ts\ -lopencv_videostab