Win10下Qt+OpenCV+Cmake编译错误
工具:
QT5.14.2
cmake-3.19.1-win64-x64
opencv4.3.0
mingw-w64-install
安装完Opencv、Qt和Cmake之后在cmd下通过mingw32-make编译,结果出现错误,错误提示如下:
错误(一):
gcc: error: long: No such file or directory
C:\Strawberry\c\bin\windres.exe: preprocessing failed.
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1494: modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1909: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:181: all] Error 2
原因:the windres.exe mingw uses cannot handle/escape “long long” given as a cmdline arg
解决方法:在cmake里面找到OPENCV_ENABLE_ALLOCATOR_STATS或者在search里面搜索,然后把后面的勾选去掉,接着Configure和Generate后,接着在cmd窗口中mingw32-make即可继续编译。
错误(二):
D:/Qt6/Tools/mingw730_64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `CMakeFiles\opencv_core.dir/objects.a(vs_version.rc.obj)' is incompatible with i386:x86-64 output
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1708: bin/libopencv_core430.dll] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1909: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:181: all] Error 2
原因:兼容问题
解决方法:http://mingw-w64.org/doku.php/download下载安装mingw-w64-install,成功后接着Configure和Generate后,在cmd窗口中mingw32-make即可继续编译
错误(三):
[ 33%] Linking CXX shared library ..\..\bin\libopencv_core430.dll
D:/Qt6/Tools/mingw730_64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: i386 architecture of input file `CMakeFiles\opencv_core.dir/objects.a(vs_version.rc.obj)' is incompatible with i386:x86-64 output
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: *** [modules\core\CMakeFiles\opencv_core.dir\build.make:1708: bin/libopencv_core430.dll] Error 1
mingw32-make[1]: *** [CMakeFiles\Makefile2:1909: modules/core/CMakeFiles/opencv_core.dir/all] Error 2
mingw32-make: *** [Makefile:181: all] Error 2
解决方法:在cmake gui中添加条目OPENCV_VS_VERSIONINFO_SKIP = 1,再重新Configure,Generate后,在cmd窗口中mingw32-make即可继续编译