1、第一次下载相关代码并配置
代码网址:https://opencv.org/releases/
获得opencv-4.5.3-vc14-vc15.exe安装包。解压后,里面有x64,而没有x86,按照网上相关教程配置包含目录、库文件目录、系统路径设置。编辑出现:error: undefined reference to `cv::Mat::Mat()',查找了很多资料都没有搞定。最后发现有存在一个问题,一是vc14/15是visual c++编译器编译出来的,而QT用的是minGW,可能存在不兼容的问题。
2、第二次下载相关代码并配置
http://gitcode.net/mirrors/huihut/opencv-mingw-build?utm_source=csdn_github_accelerator
配置后仍出现error: undefined reference to `cv::Mat::Mat()',结果才意识到自己的QT平台是x86,以前配置mySQl时也遇到不同位数的库是无法使用的情况,而我下载的虽然是minGW编译的,但是x64位的,所以不能用。
3、第三次下载相关代码并配置
网址同上
解压缩后配置pro文件,有两种方式,如果熟习脚本,可以直接在该文件中写如下代码。
INCLUDEPATH += D:\OpenCV-MinGW-Build-OpenCV-4.1.0\include LIBS += D:\OpenCV-MinGW-Build-OpenCV-4.1.0\x86\mingw\lib\libopencv_*.a D:\OpenCV-MinGW-Build-OpenCV-4.1.0\x86\mingw\bin\libopencv_*.dll
也可以右键工程----->添加库----->外部库
选择对就的文件与目录,会自动在pro中生成相关脚本。
4、新的错误出现
本以为一切就绪,哪知编译时又出现新的错误:
错误二、D:\Qt\Qt5.9.9\Tools\mingw530_32\i686-w64-mingw32\include\winnt.h:3006: error: reference to 'ACCESS_MASK' is ambiguous ACCESS_MASK Mask;后找到原因和解决方案:原因是使用了opencv库,调用了windows中的#include <winnt.h>造成冲突,解决办法是将using namespace cv;删除,在引用opencv成员时用加上域名空间cv::即可。
终于编译成功!但程序一闪而退!又经过查找资料发现,在将x86/mingw/bin路径添加到系统环境变量后,要重启QT,于是我重启QT,成功了!
联系客服