QT qmake项目使用OpenCV遇undefined reference错误求助
解决Qt qmake项目中OpenCV 4.9.0链接错误(undefined reference to cv::Mat::Mat())
这个错误属于链接阶段错误,说明编译器能找到OpenCV的头文件(未报头文件找不到的错误),但链接时无法找到cv::Mat构造函数对应的二进制实现。以下是针对性的解决步骤:
1. 匹配OpenCV库的Debug/Release版本
Qt项目的构建模式(Debug/Release)必须和链接的OpenCV库版本严格一致:
- 若项目是Release模式,链接
opencv_world490.lib - 若项目是Debug模式,必须链接带
d后缀的调试库opencv_world490d.lib
修改.pro文件,用qmake的条件判断自动匹配模式:
INCLUDEPATH += C:/opencv/build/include LIBS += -LC:/opencv/build/x64/vc16/lib # Release模式链接Release库 win32:CONFIG(release, debug|release): LIBS += -lopencv_world490 # Debug模式链接Debug库 win32:CONFIG(debug, debug|release): LIBS += -lopencv_world490d
2. 确认OpenCV库文件存在
检查C:/opencv/build/x64/vc16/lib目录下是否有对应库文件:
- Release模式:
opencv_world490.lib、opencv_world490.dll - Debug模式:
opencv_world490d.lib、opencv_world490d.dll
如果缺失,说明你下载的OpenCV预编译包不完整,需重新下载对应MSVC2019 x64版本的OpenCV包,或自行编译OpenCV生成对应库。
3. 验证Qt构建套件的架构
确保Qt Creator中选择的构建套件是MSVC 2019 64位,不要误选32位版本:
- 打开Qt Creator左侧的「项目」面板
- 查看当前使用的构建套件,确认架构为
x86_64
4. 清理缓存并重新构建
旧的构建缓存可能导致链接异常,执行以下操作:
- 点击Qt Creator顶部菜单「构建」->「清理项目」
- 再点击「构建」->「重新构建项目」
- 也可手动删除项目目录下的
build-xxx文件夹,再重新构建
内容的提问来源于stack exchange,提问作者mjyazdani
相关产品推荐
相关产品推荐

