我想在Windows上静态链接OpenCV库。我已经使用BUILD_SHARED_LIBS
OFF
构建了库,并且我在Eclipse上创建了一个项目(顺便说一句,我使用的是MinGW)。 C:\opencv
设置为我的来源,而C:\opencv\build\x86\mingw
设置为cmake-gui的目的地。然后我在C:\opencv\build\x86\mingw
上执行了mingw32-make和mingw32-make install。在Windows上运行的Eclipse上的静态链接OpenCV
我的问题是,如何在Eclipse上静态链接这些库,我尝试了几种方法,但是我的OpenCV应用程序在没有安装OpenCV的计算机上仍然无法工作。
这里是我试过到目前为止,我设置
C:\opencv\build\x86\mingw\install\include
为包括文件夹;C:\opencv\build\x86\mingw\lib
上的 “连接器”,我库路径有opencv_core246,opencv_highgui246,opencv_objdetect246和opencv_imgproc246。
这样它看起来像它仍然使用“动态链接”所以我想在其他选项添加-static但后来我得到了这些错误:
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1ce5):
undefined reference to `cv::dft(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1dab):
undefined reference to `cv::mulSpectrums(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, int, bool)'
C:\opencv\build\x86\mingw\lib\libopencv_imgproc246.a(templmatch.cpp.obj):templmatch.cpp:
(.text$_ZN2cv9crossCorrERKNS_3MatES2_RS0_NS_5Size_IiEEiNS_6Point_IiEEdi+0x1ded):
undefined reference to `cv::dft(cv::_InputArray const&, cv::_OutputArray const&, int, int)'
collect2: ld returned 1 exit status
任何人都可以向我提供真正的步进使用Eclipse和MinGW在Windows上一步一步地静态链接OpenCV库?
编辑:我发现,在VS我们必须添加库如libtiff.lib libpng.lib libjpeg.lib libjasper.lib IlmImf.lib zlib.lib到我做的连接器,但问题仍然存在。然后我听说添加Vfw32.Lib comctl32.lib解决了这个问题,但不幸的是我猜他们是VS特定的。
我试着添加这些第三方库,如您所说,但-lopencv_lapack和-lrt未找到。顺便说一下,你有什么想法,我应该如何“正确”排列OpenCV库?我如何确定libraryA取决于libraryB? – user2900552
尝试没有lapack和lrt。我没有太多想法。我尝试和测试模式来找出它 –