C++ 在Windows上运行的Eclipse上静态链接OpenCV

C++ 在Windows上运行的Eclipse上静态链接OpenCV,c++,windows,eclipse,opencv,C++,Windows,Eclipse,Opencv,我正在尝试在Windows上静态链接OpenCV库。我已经用BUILD\u SHARED\u LIBSOFF构建了这个库,并且我在Eclipse上创建了一个项目(顺便说一下,我正在使用MinGW)C:\opencv被设置为我的源代码,而C:\opencv\build\x86\mingw被设置为cmake gui上的目标。然后我在C:\opencv\build\x86\mingw上执行了mingw32-make和mingw32-make安装 我的问题是,如何在Eclipse上静态链接这些库,我尝试

我正在尝试在Windows上静态链接OpenCV库。我已经用
BUILD\u SHARED\u LIBS
OFF
构建了这个库,并且我在Eclipse上创建了一个项目(顺便说一下,我正在使用MinGW)
C:\opencv
被设置为我的源代码,而
C:\opencv\build\x86\mingw
被设置为cmake gui上的目标。然后我在
C:\opencv\build\x86\mingw
上执行了mingw32-make和mingw32-make安装

我的问题是,如何在Eclipse上静态链接这些库,我尝试了几种方法,但我的OpenCV应用程序在没有安装OpenCV的计算机上仍然无法工作

这是我到目前为止尝试过的,我设置了

  • C:\opencv\build\x86\mingw\install\include
    作为include文件夹

  • C:\opencv\build\x86\mingw\lib
    作为“链接器”上的库路径,我有opencv\u core246、opencv\u highgui246、opencv\u objdetect246和opencv\u imgproc246

通过这种方式,它似乎仍然使用“动态链接”,因此我尝试在Miscellaneous选项中添加-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.libpng.libjpeg.libjasper.lib IlmImf.libzlib.lib,但问题仍然存在。然后我听说添加Vfw32.Lib comctl32.Lib解决了这个问题,但不幸的是,我猜它们是VS特定的。

添加第三方库
-llibjasper-llibtiff-lopencv\u lapack-lzlib-lpng-ljpeg-lpthread-lrt
应该可以解决这个问题

尝试编译一个非常基本的OpenCV代码。链接静态库时,链接库的顺序很重要


如果
libraryA
依赖于
libraryB
,那么在定义
libraryB
之前必须先定义
libraryA

我曾尝试像您所说的那样添加这些第三方库,但未找到-lopencv_lapack和-lrt。顺便问一下,你有什么想法,我应该如何“安排”OpenCV库在正确的顺序?我如何确定图书馆A依赖于图书馆B?尝试不使用lapack和lrt。我不太清楚。我做了一个尝试和测试模式来找出它