我使用MinGW和CMake编译了OpenCV 2.4.1的静态版本,没有出现错误。我勾选了“With_QT”选项。
我取消勾选了“BUILD_SHARED_LIBS”,然后执行了“mingw32-make”和“mingw32-make install”命令,顺利完成了构建。在opencv的lib文件夹中生成了一堆“.a”文件。
但是,当我在Qt中运行一个简单的应用程序时,通过设置“.pro”文件的“LIBS和INCLUDEPATH”参数后,却遇到了错误。
我还在“.pro”文件中添加了以下行:
CONFIG += -static -static-libgcc
我提供了上一行的错误:
F:\OpenCV2.4.1\opencv-static\install\lib\libopencv_highgui241.a(grfmt_jpeg2000.cpp.obj):grfmt_jpeg2000.cpp:(.text$_ZN2cv13Jpeg2KDecoder10readHeaderEv+0x4f):
undefined reference to `jas_image_decode' collect2: ld returned 1
exit status mingw32-make[1]: ***
[release\test.exe] Error 1
mingw32-make: *** [release] Error 2 The process "C:/ming44/bin/mingw32-make.exe" exited with code %2. Error while building project test (target: Desktop) When executing build step 'Make'
更新
我发现出错只是在调用 highgui.hpp
方法时。比如当我使用 cv::imshow()
时出现以下错误:
F:\OpenCV2.4.1\opencv-static2\install\lib\libopencv_highgui241.a(window_w32.cpp.obj):window_w32.cpp:(.text$_ZL17icvCreateTrackbarPKcS0_PiiPFviEPFviPvES4_+0x5e1): undefined reference to `CreateToolbarEx@52' collect2: ld returned 1
exit status mingw32-make[1]: *** [release\test.exe] Error 1
mingw32-make: *** [release] Error 2
有人能帮我解决这个问题吗。
谢谢
Comctl32.lib
或Comctl32.dll
中定义的。现在,猜猜看?也许是时候链接其中一个(以便解决符号)了?副问题仍然未解决,因为你不能一遍又一遍地自己解决简单的问题。 - Alexander Shukaevvfw32.a
吗?因为我遇到了另一个需要它的错误:undefined reference to AVIStreamRelease@4'
。 - Hamid Bazargani