QT+opencv环境配置的编译阶段可能会出现各种错误,现在,我对自己遇到的错误做个小结
一:友情提示
1):
cmake下载链接:Download | CMake
OpenCV下载链接:https://opencv.org/releases.html
Qt Creator下载链接:Index of /official_releases/qt
下载镜像的文件目录:
目录说明:
参考别人写的博客:
网上可参考的环境配置步骤:
【Qt+OpenCV项目开发学习】一、环境配置_楚俊慕的博客-CSDN博客
OpenCV+Qt+Win10开发环境配置_seuStones的博客-CSDN博客
2):
组件中一定要选中MinGW版本的编译器,64位的windows系统可选64位的MinGW也可选32位的,32位的windows选32位的MinGW,,别忘了还有Developer and Designer Tools中也要选中与上面(即要与下图1中的红框中的位数选得一样才行)选的一致MinGW,,,,
3):
cmake编译opencv完成后,即环境一切准备好,在创建QT工程后,需要去掉Shadow build的勾选,否则可能产生运行错误。
4):
QT的工程项目中不能出现中文、QT工程的配置文件xxx.pro中的路径不能有空格,否则会报No such file or directory,如
INCLUDEPATH += G:\install file\opencv3.4.2\opencv\build\include
则运行QT代码时会报错:error:G:\install:No such file or directory,因为路径的install file中有空格,,,,,
5):
QT工程的配置文件xxx.pro中的路径,如果最后是一个文件夹的话,在最末尾加上反斜杠"\",表示一个目录,如果不加反斜杠的话有些QT版本会出错,,如
INCLUDEPATH += G:\installfile\opencv3.4.2\opencv\build\include
正确写法:INCLUDEPATH += G:\installfile\opencv3.4.2\opencv\build\include\
二、我当前的
qt-opensource-windows-x86-5.12.11.exe
opencv-3.4.2-vc14_vc15.exe
cmake-3.21.0-rc3-windows-x86_64.msi
三、可能出现的错误形式
错误1:
mingw32-make时,在编译到32%左右遇到如下错误 :
'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...
解决方案:
在..\opencv\sources\modules\videoio\src\cap_dshow.cpp
在#include "DShow.h"这一行前加上#define NO_DSHOW_STRSAFE
错误2:
error: 'MFP_MEDIAITEM_CHARACTERISTICS' has not been declared
解决方案:
cmake选项的WITH_IPP 和 WITH_MSMF去勾选,重新点configure和generate
错误3:
libpython36.a: error adding symbols: File format not recognized
分析产生原因:
Windows下Python发行版自带的链接库是为msvc编译的,并不是为gcc编译的,所以gcc无法识别,故需要重新编译python的库
解决方案:
步骤:
1)安装gendef
命令行执行mingw-get install gendef(可能需要连接国外网络)
2)安装Python
已安装python的不必重新安装
3)备份原来python的链接库
备份python目录/libs/下的文件,并删除里面的xxxx.a文件,原来的这个文件是msvc编译的
4)重新编译链接库
cmd命令行执行:
cd python目录
gendef python36.dll
dlltool -D python36.dll -d python36.def -l libs/libpython36.a
5)cmake重新编译opencv,此时即可编译通过