Qt Creator集成OpenCV后编译出现LNK2019链接错误求助
这个LNK2019错误我太熟悉了——本质就是链接器找不到cv::VideoCapture构造函数的实现代码,说白了就是你的Qt项目没正确链接OpenCV的视频模块库。咱们一步步来解决:
第一步:检查Qt项目文件(.pro)的配置
这是最常见的问题,你需要确保.pro文件里正确指定了OpenCV的头文件路径、库文件路径,并且链接了对应的视频模块库。
举个配置示例(根据你的OpenCV安装路径和版本调整):
win32 { # 替换成你的OpenCV include目录 INCLUDEPATH += D:/opencv/build/include # 替换成你的OpenCV lib目录(注意是x64还是x86,要和Qt Kit的架构一致) LIBS += -LD:/opencv/build/x64/vc16/lib # 区分Debug和Release模式,OpenCV的Debug库带d后缀 CONFIG(release, debug|release): LIBS += -lopencv_world480 CONFIG(debug, debug|release): LIBS += -lopencv_world480d }
如果你的OpenCV是分模块编译的(不是用opencv_world整合库),那需要单独链接视频IO模块的库:
# Release版 LIBS += -lopencv_videoio480 -lopencv_core480 -lopencv_imgcodecs480 # Debug版 LIBS += -lopencv_videoio480d -lopencv_core480d -lopencv_imgcodecs480d
第二步:确认架构匹配
一定要保证Qt Creator使用的Kit架构(x86/x64)和你安装的OpenCV架构完全一致。比如你装的是x64版本的OpenCV,就不能用x86的Qt Kit来构建项目,否则链接器肯定找不到对应架构的库。
第三步:检查代码里的头文件
确保你包含了OpenCV视频模块的头文件,要么直接包含:
#include <opencv2/videoio.hpp>
要么包含全模块的头文件:
#include <opencv2/opencv.hpp>
附:能跑通的摄像头显示示例代码
给你一段简单的示例,假设你的主窗口有一个QLabel(命名为label)用来显示画面:
#include <opencv2/opencv.hpp> #include <QImage> #include <QLabel> #include <QDebug> #include <QApplication> void videoCap::playVideo() { // 初始化摄像头,0表示系统默认摄像头 cv::VideoCapture cap(0); if (!cap.isOpened()) { qDebug() << "无法打开摄像头!"; return; } cv::Mat frame; while (true) { cap >> frame; if (frame.empty()) { qDebug() << "摄像头读取失败!"; break; } // 把OpenCV的BGR格式Mat转换成Qt的RGB格式QImage QImage img(frame.data, frame.cols, frame.rows, QImage::Format_BGR888); ui->label->setPixmap(QPixmap::fromImage(img.rgbSwapped())); // 处理Qt事件循环,防止界面卡死 QApplication::processEvents(); } // 释放摄像头资源 cap.release(); }
按照上面的步骤调整后,重新构建项目,应该就能解决这个链接错误了。
内容的提问来源于stack exchange,提问作者Burkay
相关产品推荐
相关产品推荐

