You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinGW环境下Qt Creator调用OpenCV报undefined reference错误求助

解决Qt 6 + MinGW编译OpenCV链接错误问题

核心问题定位

你遇到的undefined reference本质是MinGW编译的Qt项目,找不到匹配编译版本的OpenCV库文件——VS2022能正常运行,说明OpenCV本身没问题,但你用的OpenCV大概率是MSVC版本,和MinGW不兼容,或者Qt项目的链接配置有误。

分步解决步骤

1. 确认OpenCV编译版本与MinGW匹配

  • 检查当前使用的OpenCV是否是MinGW编译版本:MSVC编译的OpenCV库后缀是*.lib,MinGW编译的是*.a/*.dll.a。如果你的OpenCV是官网下载的预编译包,默认只有MSVC版本,必须自己用MinGW重新编译OpenCV。
  • 编译OpenCV时,要和你Qt用的MinGW版本完全一致(比如Qt用的是MinGW 11.2.0,编译OpenCV也要用同版本的MinGW)。

2. 修正Qt .pri配置文件

你的.pri配置要确保路径、库文件名正确,以下是标准配置模板,替换成你的实际路径:

# OpenCV路径配置
OPENCV_DIR = D:/opencv/build_mingw  # 替换为你的MinGW编译OpenCV的build目录
INCLUDEPATH += $$OPENCV_DIR/include
INCLUDEPATH += $$OPENCV_DIR/include/opencv2

# 链接库配置(根据OpenCV版本调整库名,比如4.x版本)
LIBS += -L$$OPENCV_DIR/x64/mingw/lib  # 注意是x64还是x86,和你的Qt编译架构一致
LIBS += -lopencv_core460
LIBS += -lopencv_imgproc460
LIBS += -lopencv_highgui460
LIBS += -lopencv_imgcodecs460
# 按需添加其他需要的库,比如opencv_videoio等
  • 注意:库文件名要和OPENCV_DIR/x64/mingw/lib下的文件完全对应,比如OpenCV 4.6.0的核心库是libopencv_core460.a,所以配置里写-lopencv_core460(去掉前缀lib和后缀.a)。
  • 不要混合使用绝对路径和相对路径,确保OPENCV_DIR是正确的绝对路径。

3. 检查Qt项目编译架构

  • 确认Qt Creator的编译套件是MinGW 64位(如果你的OpenCV是64位编译的),在Qt Creator的「项目」选项卡->「构建套件(Kits)」里查看,确保编译器、架构和OpenCV一致。

4. 清理项目重新构建

  • 执行Qt Creator的「构建」->「清理项目」,然后删除项目目录下的build-*文件夹,再重新构建,避免旧的缓存文件干扰。

验证测试代码

用极简代码验证配置是否正确,比如:

#include <opencv2/opencv.hpp>
#include <QDebug>

int main() {
    cv::Mat img = cv::imread("test.jpg");
    if(img.empty()) {
        qDebug() << "Image load failed";
    } else {
        qDebug() << "Image loaded, size:" << img.rows << "x" << img.cols;
        cv::imshow("Test", img);
        cv::waitKey(0);
    }
    return 0;
}

如果这段代码能正常编译运行,说明配置没问题,再逐步替换成你原来的代码排查。


内容的提问来源于stack exchange,提问作者望曉天

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:08:18