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

在Windows系统Qt Creator中使用OpenCV编译报错求助

Qt Creator + OpenCV编译失败:imread调用报错的排查与修复

咱们先从你给出的.pro文件和测试代码入手,拆解几个最可能导致编译失败的点,一步步解决问题:

首先贴出你提供的.pro文件(方便对照):

QT += core gui
QT += testlib
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11

DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    editor.cpp \
    image.cpp \
    linked_list.cpp \
    main.cpp \
    mainwindow.cpp \
    tests.cpp

HEADERS += \
    editor.h \
    image.h \
    linked_list.h \
    mainwindow.h \
    node.h

FORMS += \
    editor.ui \
    mainwindow.ui

INCLUDEPATH += \
    D:/boost

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc15/lib/ -lopencv_world420
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc15/lib/ -lopencv_world420d
else:unix: LIBS += -LD:/opencv/build/x64/vc15/lib/ -lopencv_world420

INCLUDEPATH += D:/opencv/build/include
DEPENDPATH += D:/opencv/build/include

可能的错误原因及修复步骤

1. 头文件缺失或命名空间未正确使用

你的测试代码写了cv::Mat img = imread("test.png");——这里的imread没有加cv::前缀,而且如果代码里没包含对应头文件,编译器根本找不到这个函数。

修复方法:
在调用imread的.cpp文件开头添加:

// 要么包含完整的OpenCV头文件
#include <opencv2/opencv.hpp>
// 要么更精准地包含需要的模块(推荐)
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp> // imread在这个头文件里(OpenCV4.x版本)

同时把代码修改为:

cv::Mat img = cv::imread("test.png");

如果嫌每次写cv::麻烦,可以在cpp文件开头加using namespace cv;(注意不要在头文件里加,避免命名空间污染)。

2. 编译器与OpenCV库不兼容

你的.pro里配置的OpenCV库是vc15版本(对应VS2017编译器),但如果你的Qt Creator当前使用的是MinGW套件,那这两个完全不兼容,会直接导致链接错误(也就是编译阶段失败)。

验证方法:
打开Qt Creator的工具->选项->构建和运行,查看当前选中的套件(Kit)的编译器是MSVC2017还是MinGW。

修复方法:

  • 如果是MinGW:要么切换到MSVC2017的Kit,要么重新用MinGW编译一份对应版本的OpenCV库,再替换.pro里的路径。
  • 如果是MSVC2017:那这部分配置没问题,继续排查其他点。

3. .pro文件配置冗余导致的问题

你的.pro里最后一行else:unix: LIBS += ...在Windows环境下是多余的,而且可能干扰配置逻辑,建议删掉这行,把OpenCV的配置整理得更清晰:

# 把OpenCV的INCLUDEPATH移到boost前面(避免潜在的头文件冲突,非必须但更稳妥)
INCLUDEPATH += D:/opencv/build/include \
               D:/boost
DEPENDPATH += D:/opencv/build/include

# 单独封装win32的OpenCV库配置
win32 {
    CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc15/lib/ -lopencv_world420
    CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc15/lib/ -lopencv_world420d
}

4. 清理项目缓存重新构建

有时候Qt Creator的旧缓存会导致奇怪的编译错误,执行以下操作:

  1. 点击菜单栏构建->清理项目
  2. 然后点击构建->重新构建项目

总结

最可能导致你编译失败的两个原因是:imread未加cv::前缀/头文件缺失,或者编译器与OpenCV库不兼容。先按上面的步骤排查,应该能解决问题。

内容的提问来源于stack exchange,提问作者badcoder11

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:07:33