记录Windows QT Mingw 32配置OpenCV问题
一、CMake GUI阶段软件环境:QT 5.8.0软件版本问题不大,环境对应上就好,mingw注意一、CMake GUI阶段1、CMake 报错 %TSD-Header-###%,且带有中文乱码%tsd-header-###%0c锟絶锟斤拷这一步的问题会在CMake第一次config 就出现,没有原因:电脑文件被加密,CMake读取的信息有问题解决方法: 解密整个文件夹或者 换个电脑2.FFmp
软件环境:QT 5.8.0
CMake 3.7.2
OpenCV 4.9.0
软件版本问题不大,环境对应上就好。
一、CMake GUI阶段
1、CMake 报错 %TSD-Header-###%,且带有中文乱码
%tsd-header-###%0c锟絶锟斤拷
这一步的问题会在CMake第一次config 就出现,没有WITH*,下面图的内容都是没有的

原因:电脑文件被加密,CMake读取的信息有问题
解决方法: 解密整个文件夹 或者 换个电脑
2.FFmpeg缺失的问题
这个问题可以参考这位老哥:
解决CMake编译opencv时ffmpeg为NO问题_opencv编译ffmpeg为no-CSDN博客
刚好我跟他的版本一样,直接使用了他的生成.Cache文件夹
遇到这个报错,如果运气好重新configure 也是可以通过的,但是VIDEO I/O 的 FFMPEG这个功能支持熟悉会是 NO(不支持),后续使用ffmpeg会报错,或者更离谱的异常;如果不需要视频处理,FFMPEG是可以考虑直接跳过下一步的
我也是复制老哥的文件夹之后,重新configure变成YES,

二、Windows Power shell mingw32-make阶段
1、多线程编译问题
[ 12%] Building C object 3rdparty/libwebp/CMakeFiles/libwebp.dir/src/utils/utils.c.obj
[ 12%] Linking C static library ..\lib\liblibwebp.a
[ 12%] Built target libwebp
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
原因不详,这种突然说recipe for target 'all' failed,没有其他error 的一般都是多线程编译导致的问题
解决方案:换成更少的线程编译
2、mutex.h互斥锁的头文件编译报错
/05_Tools/03_OpenCV/opencv/sources/3rdparty/protobuf/src/google/protobuf/stubs/mutex.h:98:7: note: 'google::protobuf::internal::CallOnceInitializedMutex<std::mutex>' has a non-trivial destructor
3rdparty\protobuf\CMakeFiles\libprotobuf.dir\build.make:87: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/arena.cc.obj' failed
mingw32-make[2]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/src/google/protobuf/arena.cc.obj] Error 1
CMakeFiles\Makefile2:789: recipe for target '3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all' failed
mingw32-make[1]: *** [3rdparty/protobuf/CMakeFiles/libprotobuf.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
原因不详
解决方法:按照路径,找到mutex。h源码 如图注释掉
再重新configure 与 genarate

后话:
闲下来又用qt 5.13.0的版本试了下,编译出来的opencv库,
给我报了错,undefined reference to `cv::imread(std::__cxx11::basic_string<char, std::char_trtraits<char>, std::allocator<char> > const&, int)'
想起来用64bit建的项目;

Mingw 32 是可以直接用的。需要自取
链接:https://pan.baidu.com/s/1m03IxxJPeWp_F68GcmEQjA?pwd=1234
提取码:1234
1、把\install\x64\mingw\bin配进环境变量;

2、qt pro文件直接加 头文件路径 跟 .a库路径:
INCLUDEPATH += D:\01_Tool\04_Qt_OpenCV\install\include
LIBS += D:\01_Tool\04_Qt_OpenCV\install\x64\mingw\lib\libopencv_*.a

更多推荐
所有评论(0)