1. 为什么在 Windows 10 上配通 Qt + OpenCV 是个“卡脖子”环节,而不是简单装两个软件?
你不是第一个在 Qt Creator 里写完cv::Mat img = cv::imread("test.jpg");却编译报错LNK2019: unresolved external symbol cv::imread的人。我见过太多刚从 Python + OpenCV 转过来的开发者,信心满满地新建一个 Qt Widgets Application,把 OpenCV 的头文件#include <opencv2/opencv.hpp>一贴,再加两行读图代码,结果点击运行——弹出一长串红色链接错误,连窗口都没出来。更常见的是:程序能编译通过,但一调用cv::imshow()就直接崩溃,调试器停在opencv_world455.dll加载失败的位置,控制台只打印一句The code execution cannot proceed because opencv_world455.dll was not found.。这不是你代码写错了,也不是 Qt 不行,而是整个跨工具链的二进制兼容性体系没对齐。
核心问题就藏在标题这短短十个字里:“Windows 10 下 Qt 安装及 OpenCV 配置”。它表面是环境搭建,实则是三重对齐工程:第一重,Qt 的编译器链(MSVC 还是 MinGW?哪个版本?x64 还是 x86?)必须和 OpenCV 的预编译库完全一致;第二重,Qt 的构建系统(qmake 或 CMake)必须能精准定位 OpenCV 的头文件路径、lib 文件路径、dll 动态库路径,并在链接时正确注入依赖;第三重,Windows 系统级的 DLL 搜索路径机制必须被显式干预,否则运行时根本找不到那些.dll。这三重里漏掉任何一环,你写的代码就永远停留在“理论上能跑”的阶段。我带过的某高校图像处理课程小组,7 个学生,有 5 个卡在配置环节超过 48 小时,最后发现全是 MinGW 版 Qt 去链接了 MSVC2019 编译的 OpenCV 库——就像拿柴油发动机的火花塞去点汽油,物理上就不匹配。所以这不是“安装教程”,而是一份Windows 平台下 C++ 视觉开发的准入通行证说明书。它适合两类人:一类是刚学完《C++ Primer》想动手做点实际图像处理项目的新人,另一类是已有 Python/OpenCV 经验、正转向工业级 C++ GUI 开发的工程师。前者需要避开所有“默认选项陷阱”,后者则需要理解 Qt 项目文件(.pro)里每一行LIBS +=背后的链接逻辑。接下来的所有步骤,都建立在一个铁律之上:宁可多花 20 分钟确认编译器版本,也不要花 3 小时排查一个链接错误。
2. 整体设计思路:为什么放弃“一键安装包”,坚持手动分步验证?
很多人看到网上流传的“Qt+OpenCV 一键配置脚本”或“绿色版集成包”,第一反应是“太方便了”。我试过三个不同来源的这类包,结果无一例外:它们要么强制你使用老旧的 Qt 5.9 + OpenCV 3.4 组合(不支持现代 C++17 特性),要么在后台静默修改你的系统环境变量 PATH,导致后续安装 Visual Studio 时出现头文件冲突,最严重的一次,一个包把我的 Qt Creator 的调试器路径覆盖成了它自带的旧版cdb.exe,结果所有断点失效,花了整整一个下午才还原。所以这次我们彻底放弃“捷径”,采用分步隔离、逐层验证的设计思路。整个流程被拆成四个严格隔离的阶段:第一阶段只装 Qt,不碰 OpenCV,目标是确保你能用 Qt Creator 新建一个空的 Widgets Application 并成功运行;第二阶段只下载并解压 OpenCV,不配置任何路径,目标是人工验证opencv_worldxxx.dll能否被 Windows 正确加载;第三阶段才在 Qt 项目中引入 OpenCV,但仅添加头文件包含和cv::getVersionString()调用,不涉及任何图像 I/O 或 GUI 操作,目标是验证编译和链接是否通过;第四阶段才启用cv::imread和cv::imshow,并解决运行时 DLL 找不到的问题。这个设计背后有三个硬核理由:其一,Windows 的 DLL 加载机制是“先搜索当前目录,再搜索 PATH 中的目录”,如果你在第一步就往 PATH 里加了 OpenCV 的 bin 目录,那么后续任何步骤出错,你都无法判断是 Qt 自身问题还是 OpenCV 干扰所致;其二,Qt 的 qmake 工具在解析.pro文件时,对路径中的空格、中文、特殊符号极其敏感,手动解压到C:/opencv这种绝对干净路径,比解压到D:/软件/视觉库/opencv-4.5.5要可靠十倍;其三,也是最关键的一点:真正的工程能力,不在于你会不会复制粘贴配置命令,而在于你能否在某个环节失败时,精准定位是哪一层出了问题。比如当cv::imshow()崩溃时,如果你已经验证过前三个阶段全部通过,那问题必然出在第四阶段的 DLL 路径设置上,而不是去怀疑 Qt 安装是否损坏。这种分层思维,是你未来维护大型 C++ 项目的底层肌肉记忆。
2.1 编译器选择:MSVC 还是 MinGW?为什么我最终锁死 MSVC 2019?
在 Windows 下配 Qt,第一步永远绕不开编译器。Qt 官方在线安装器会提供多个“Kit”选项,常见的有MSVC 2017,MSVC 2019,MinGW 7.3,MinGW 11.2。很多新手会下意识选 MinGW,理由很朴素:“不用装 Visual Studio,轻量”。这个想法在 2015 年或许成立,但在 2024 年的 OpenCV 生态里,它是个高危选择。原因很简单:OpenCV 官方预编译库(Windows 版)只提供 MSVC 编译版本,且明确标注支持的 MSVC 版本号。你去 OpenCV 官网下载页面看,最新版opencv-4.8.0-vc14_vc15.exe这个文件名里的vc14和vc15就是微软编译器代号(vc14=VS2015, vc15=VS2017, vc16=VS2019, vc17=VS2022)。它根本没有为 MinGW 提供任何预编译包。这意味着,如果你选 MinGW,你只有两条路:要么自己用 MinGW 从源码编译整个 OpenCV(耗时 2~4 小时,且极易因 CMake 参数错误导致编译失败),要么冒险使用第三方非官方 MinGW 版本(稳定性无法保证,社区支持几乎为零)。而 MSVC 路径则清晰得多:安装 VS2019(免费社区版即可),再安装对应 Kit 的 Qt,最后下载匹配的 OpenCV 预编译包,三者版本号对齐,开箱即用。
具体怎么对齐?以当前最稳妥的组合为例:Qt 6.5.3(LTS 版本) + VS2019(v142 工具集) + OpenCV 4.8.0。你可以在 Qt 官网下载页面看到,Qt 6.5.3 的 Windows 在线安装器明确列出支持的编译器:“Microsoft Visual Studio 2019 (v142)”。打开 VS2019 安装器,在“工作负载”里勾选“使用 C++ 的桌面开发”,在“单个组件”里确保勾选了“CMake tools for Visual Studio”和“Windows 10/11 SDK”。安装完成后,启动 Qt Creator,在Tools → Options → Kits → Compilers里,你应该能看到自动识别出的Microsoft Visual C++ Compiler 14.29(这就是 VS2019 v142 工具集)。接着在Kits标签页,新建一个 Kit,名称设为Desktop Qt 6.5.3 MSVC2019 64-bit,编译器选刚才识别出的 MSVC 14.29,调试器选Auto-detected CDB debugger,Qt 版本选你安装的 6.5.3。此时,Kit 的状态栏会显示绿色对勾,表示一切就绪。这个过程看似繁琐,但它消灭了未来 90% 的链接错误根源。我曾帮某公司产线视觉检测系统迁移,他们旧系统用的是 Qt 5.12 + MinGW + 自编译 OpenCV,一次 Windows 更新后,MinGW 的运行时库libgcc_s_seh-1.dll版本不兼容,导致整套检测软件无法启动,修复耗时三天。换成 MSVC 后,同样的系统更新,零故障。这就是工业级稳定性的代价——前期多点配置,后期少点救火。
2.2 OpenCV 构建模式:为什么坚决不推荐“源码编译”,而首选“预编译库”?
OpenCV 官网提供了两种获取方式:一是下载.exe安装包(本质是预编译库),二是下载.zip源码包自行 CMake 编译。几乎所有资深 C++ 开发者都会告诉你:在 Windows 下首次配置,无条件选择预编译库。理由非常现实:时间成本与确定性。OpenCV 源码超过 100 万行,CMake 配置项多达 200+ 个。一个典型的新手配置场景是:他想启用 CUDA 加速,于是勾选WITH_CUDA=ON,结果 CMake 报错找不到nvcc编译器;他去装 CUDA Toolkit,又发现版本必须严格匹配 OpenCV 源码要求的 11.2,而他电脑上是 11.8;他降级 CUDA,又触发了驱动兼容性警告……最终,他在 CMake GUI 里折腾了 5 小时,连configure按钮都没点成功。而预编译库呢?官网下载opencv-4.8.0-vc14_vc15.exe(注意文件名!),双击运行,选择安装路径如C:/opencv,一路下一步,30 秒完成。安装后,C:/opencv/build/x64/vc16/lib目录下就是所有.lib链接库,C:/opencv/build/x64/vc16/bin下就是所有.dll运行时库,C:/opencv/build/include下就是所有头文件。结构清晰,路径固定,毫无歧义。
当然,预编译库也有前提:你必须确认它的构建参数符合你的需求。比如,如果你需要 Tesseract OCR 支持,就得找带contrib模块的版本;如果要做嵌入式部署,可能需要静态链接版(.lib而非.dll)。但这些需求,在首次配置时基本不存在。对于 95% 的学习和中小型项目,opencv-4.8.0-vc14_vc15.exe这个“通用版”完全够用。它默认启用了WITH_QT=ON(支持 Qt GUI 显示)、WITH_OPENGL=ON(硬件加速)、WITH_TBB=ON(多线程优化),禁用了WITH_CUDA(避免依赖 NVIDIA 驱动)。你可以用记事本打开C:/opencv/build/OpenCVConfig.cmake文件,里面有一段注释清楚写着:
# This configuration was generated for: # - OpenCV version: 4.8.0 # - Build type: Release # - Compiler: MSVC 19.29 (v142) # - Architecture: x64 # - Enabled modules: core, imgproc, imgcodecs, videoio, highgui, ...这段文字就是你的“信任状”。它告诉你,这个库就是为 VS2019 x64 环境量身定制的。相比之下,源码编译出来的库,除非你完整记录每一步 CMake 参数,否则三个月后你自己都忘了当初为什么勾选了BUILD_opencv_python3。所以,别被“源码编译显得很专业”的幻觉迷惑。真正的专业,是知道什么时候该用最确定的方案,把精力留给真正需要创新的地方——比如,怎么用cv::dnn::Net加载一个自定义的 YOLOv8 模型,而不是纠结于opencv_world480.lib为什么链接不上。
3. 实操全过程:从零开始,每一步都附带“为什么这么做”的现场解释
现在,我们进入真正的实操环节。请关闭所有正在运行的 Qt Creator、Visual Studio、命令行窗口。我们将以一个完全干净的 Windows 10 系统为起点,逐步执行。每一步操作后,我都会告诉你“为什么必须这样”,以及“如果跳过这步会怎样”。这不是流水账,而是带你走进调试器内部看世界。
3.1 第一阶段:纯 Qt 环境验证(耗时约 8 分钟)
步骤 1:下载并安装 Qt Online Installer
去 https://www.qt.io/download (注意是官网,不是第三方镜像),下载 “Qt Online Installer for Windows”。运行安装器,登录(可注册免费账号),在组件选择界面,关键操作来了:
- 展开
Qt→Qt 6.5.3→ 勾选MSVC 2019 64-bit(这是核心,不要选 MinGW!) - 展开
Developer and Designer Tools→ 勾选Qt Creator 12.0.2(最新稳定版) - 其他全部取消勾选(如
Qt 5.15.2、Android、iOS等,避免干扰)
点击“下一步”,安装到默认路径C:\Qt。
提示:为什么只选
MSVC 2019 64-bit?因为这是目前 Qt 6.x 系列中,与 VS2019 兼容性最好、社区支持最广的 Kit。Qt 6.6+ 开始主推 CMake,但 6.5.3 的 qmake 支持依然最成熟,适合入门。如果你装了 VS2022,这里应选MSVC 2022 64-bit,原理完全相同。
步骤 2:启动 Qt Creator,创建并运行空项目
安装完成后,启动 Qt Creator。首次启动会引导你选择 Kit,务必选择Desktop Qt 6.5.3 MSVC2019 64-bit(如果没自动识别,按 2.1 节手动配置)。然后:
File → New File or Project→Application→Qt Widgets Application- 项目名称填
QtTest,路径选C:/QtTest(路径不含空格和中文!) - Kit 选择刚才配置好的
MSVC2019,点击“下一步”直到完成。 - 项目创建后,直接点击左下角绿色三角形“运行”按钮。
此时,你应该看到一个空白的、标题为 “QtTest” 的窗口弹出,几秒后自动关闭。控制台输出类似:
Starting C:\QtTest\build-QtTest-Desktop_Qt_6_5_3_MSVC2019_64bit-Debug\debug\QtTest.exe... C:\QtTest\build-QtTest-Desktop_Qt_6_5_3_MSVC2019_64bit-Debug\debug\QtTest.exe exited with code 0验证成功标志:窗口能弹出,进程退出码为 0。这证明 Qt 的编译器链、调试器、运行时环境全部正常。如果失败,99% 是 Kit 配置错误,此时不要继续,回头检查 VS2019 是否安装了 C++ 工作负载。
3.2 第二阶段:OpenCV 预编译库部署与 DLL 加载验证(耗时约 5 分钟)
步骤 1:下载并解压 OpenCV
去 https://opencv.org/releases/ ,找到4.8.0版本,下载opencv-4.8.0-vc14_vc15.exe(注意文件名!)。双击运行,安装路径必须设为C:/opencv(全英文、无空格、根目录)。安装完成后,你会得到C:/opencv/build目录。
注意:为什么是
C:/opencv?因为 Windows 的 PATH 环境变量对路径长度和特殊字符极其敏感。C:/Program Files/opencv里的空格会导致 qmake 解析路径时出错;D:/My Projects/opencv里的中文或长路径可能触发 Windows 的 MAX_PATH 限制(260 字符)。C:/opencv是最短、最安全的路径。
步骤 2:手动验证 DLL 是否可加载
打开 Windows PowerShell(管理员权限非必需),执行:
cd C:/opencv/build/x64/vc16/bin .\opencv_world480.dll你可能会看到一个错误提示:“此应用程序无法启动,因为计算机中丢失 opencv_ffmpeg480_64.dll”。别慌,这是正常现象——DLL 本身不能直接运行,但这个命令触发了 Windows 的 DLL 加载器。我们真正要看的是:有没有报“模块初始化失败”或“找不到指定的模块”这类致命错误。如果没有,说明opencv_world480.dll本身是有效的。更严谨的验证法是:用Dependency Walker(老工具)或Dependencies(新替代品,GitHub 可搜)打开opencv_world480.dll,查看右侧依赖列表。你应该看到VCRUNTIME140.dll,MSVCP140.dll,KERNEL32.dll等,且没有红色的“MISSING”标记。如果有,说明你的 VS2019 运行时没装全,需重新运行 VS2019 安装器,勾选 “C++ redistributable”。
3.3 第三阶段:Qt 项目中引入 OpenCV 头文件与链接库(耗时约 12 分钟)
步骤 1:修改 Qt 项目文件.pro
回到 Qt Creator,打开QtTest.pro文件(不是main.cpp!)。在文件末尾,追加以下内容:
# OpenCV 配置开始 OPENCV_DIR = C:/opencv/build INCLUDEPATH += $$OPENCV_DIR/include LIBS += -L$$OPENCV_DIR/x64/vc16/lib \ -lopencv_core480 \ -lopencv_imgproc480 \ -lopencv_imgcodecs480 \ -lopencv_videoio480 \ -lopencv_highgui480 # OpenCV 配置结束保存文件。注意:-L后面是库文件所在目录(lib),-l后面是库名去掉lib前缀和.lib后缀(如opencv_core480.lib→-lopencv_core480)。vc16对应 VS2019,如果用 VS2022 则是vc17。
步骤 2:修改main.cpp,加入最简 OpenCV 调用
替换main.cpp的全部内容为:
#include "widget.h" #include <QApplication> #include <opencv2/opencv.hpp> // 添加 OpenCV 头文件 #include <iostream> int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; // 最简验证:只调用 OpenCV 版本函数,不涉及 I/O 或 GUI std::cout << "OpenCV version: " << CV_VERSION << std::endl; std::cout << "OpenCV build info: " << cv::getBuildInformation() << std::endl; w.show(); return a.exec(); }点击“运行”。如果控制台输出类似:
OpenCV version: 4.8.0 OpenCV build info: General configuration for OpenCV 4.8.0...并且窗口正常弹出,恭喜,编译和链接已通过!这一步成功,意味着 Qt 的 qmake 正确找到了头文件、链接器正确找到了.lib文件、生成的可执行文件里已嵌入了对opencv_world480.dll的导入表。这是最关键的里程碑。
实操心得:我第一次配的时候,在
.pro文件里写了LIBS += -LC:/opencv/build/x64/vc16/lib -lopencv_core480,结果编译报错cannot find -lopencv_core480。查了半小时,发现是路径里的冒号:后面少了空格!qmake 把-LC:/opencv...当成了一个整体参数。正确写法必须是-L$$OPENCV_DIR/x64/vc16/lib(用变量)或-L "C:/opencv/build/x64/vc16/lib"(用引号包裹)。这种细节,文档里不会写,只有踩过才知道。
3.4 第四阶段:解决cv::imshow()运行时崩溃,实现图像显示(耗时约 10 分钟)
步骤 1:准备测试图片并修改main.cpp
在C:/QtTest目录下,放一张名为test.jpg的图片(可用手机随便拍一张)。修改main.cpp,在w.show();之前加入:
cv::Mat img = cv::imread("test.jpg"); if (img.empty()) { std::cerr << "Error: Could not load image!" << std::endl; return -1; } std::cout << "Image loaded: " << img.size() << std::endl; cv::imshow("Test Image", img); cv::waitKey(0); // 等待按键再次运行。大概率会崩溃,控制台可能一闪而过,或者弹出“QtTest.exe 已停止工作”。
步骤 2:解决 DLL 加载失败
崩溃原因:cv::imshow()内部依赖opencv_world480.dll,而你的QtTest.exe运行时,Windows 默认只在当前目录(C:/QtTest)和系统 PATH 里找 DLL。但opencv_world480.dll在C:/opencv/build/x64/vc16/bin。解决方案有两个,我推荐第一个:
方案 A(推荐):将 OpenCV 的 bin 目录复制到可执行文件同目录
在 Qt Creator 的Projects模式下,点击左侧Build & Run→Build Steps→Details,找到Build directory,它通常是C:/QtTest/build-QtTest-Desktop_Qt_6_5_3_MSVC2019_64bit-Debug。进入这个目录下的debug子目录(或release,取决于你当前构建套件),然后:
- 创建一个新文件夹
plugins(稍后用于 Qt 插件) - 将
C:/opencv/build/x64/vc16/bin下的所有.dll文件(约 20 个,包括opencv_world480.dll,opencv_ffmpeg480_64.dll等)全部复制到这个debug目录下。
方案 B:修改系统 PATH(不推荐,污染全局环境)
在 Windows 系统属性 → 高级 → 环境变量 → 系统变量 →Path→ 新建,添加C:/opencv/build/x64/vc16/bin。但这样会影响你电脑上所有程序,不安全。
步骤 3:终极验证
复制完 DLL 后,再次运行。你应该看到一个标题为 “Test Image” 的窗口,显示你放的test.jpg图片。按任意键,窗口关闭,程序退出。此时,整个配置流程 100% 成功。你已经拥有了一个可随时调用 OpenCV 全功能的 Qt C++ 开发环境。
4. 常见问题与排查技巧实录:那些让我熬夜到凌晨三点的坑
配置过程中,90% 的问题都集中在几个经典场景。我把它们整理成一张速查表,并附上我在真实项目中用过的、教科书里找不到的排查技巧。这些问题,我至少在三个不同客户的现场遇到过,每一次都伴随着咖啡和绝望。
| 问题现象 | 最可能原因 | 排查技巧 | 我的独家经验 |
|---|---|---|---|
LNK2019: unresolved external symbol cv::imread | .pro文件中LIBS +=路径错误,或库名拼写错误(如opencv_core480.lib写成opencv_core480) | 在 Qt Creator 的Compile Output窗口,搜索linking,看最后一行link命令是否包含了-lopencv_imgcodecs480。如果没有,说明.pro没生效。 | 我发现一个隐藏 bug:如果.pro文件里LIBS +=的行末有多余空格,qmake 会静默忽略整行!务必用记事本打开.pro文件,用“显示所有字符”功能检查。 |
程序编译通过,但cv::imshow()崩溃,调试器停在ntdll.dll | opencv_world480.dll找到了,但它依赖的opencv_ffmpeg480_64.dll没找到 | 用Dependencies工具打开opencv_world480.dll,看右侧依赖树里opencv_ffmpeg480_64.dll是否标红。如果是,说明它缺失。 | FFmpeg DLL 的名字极难猜!OpenCV 4.8.0 对应的是opencv_ffmpeg480_64.dll(注意_64后缀),不是opencv_ffmpeg480.dll。我曾为此浪费 2 小时,因为官网文档没写清楚。 |
cv::imread()返回空Mat,控制台输出Could not load image! | 图片路径错误,或 OpenCV 不支持该图片格式(如 WebP) | 在cv::imread()后加std::cout << cv::getBuildInformation() << std::endl;,看输出里是否有JPEG: YES、PNG: YES。如果没有,说明你的 OpenCV 库没编译图像解码器。 | 预编译库默认支持 JPG/PNG/BMP。如果你的图片是 HEIC 或 AVIF,imread必然失败。解决方案:用在线转换工具转成 JPG,或改用cv::imdecode()+QFile读取原始字节流。 |
Qt Creator 报错Cannot find file 'C:/Qt/6.5.3/msvc2019_64/include/QtCore/qglobal.h' | Qt 安装不完整,或 Kit 的 Qt 版本路径指向错误 | 在Projects模式下,点击Build & Run→Qt Versions,检查C:/Qt/6.5.3/msvc2019_64/bin/qmake.exe是否存在。如果不存在,说明安装时没勾选MSVC 2019 64-bit。 | 这个错误常发生在你安装了多个 Qt 版本后。Qt Creator 有时会缓存旧路径。解决方法:删除C:/Users/[用户名]/AppData/Roaming/QtProject/qtcreator目录下的qtcreator.ini文件,重启 Creator。 |
4.1 一个真实案例:客户产线软件在 Windows 11 上集体崩溃
去年,某汽车零部件厂的视觉检测软件(基于 Qt 5.12 + OpenCV 3.4)在升级 Windows 11 后,所有工控机上的软件启动即崩溃。日志只显示Access violation at address 00007FFA12345678 in module 'opencv_world340.dll'。常规思路是重装 OpenCV,但我先做了三件事:
- 用
Process Monitor(Sysinternals 工具)监控opencv_world340.dll的加载过程,发现它成功加载,但随后尝试访问C:/Windows/System32/ucrtbase.dll时被拒绝; - 查 Microsoft 官方文档,发现 Windows 11 的 UCRT(Universal CRT)更新后,旧版 VC++ 运行时(v140)与新 UCRT 存在符号冲突;
- 解决方案:不是重装 OpenCV,而是让客户在所有工控机上安装
Microsoft Visual C++ 2015-2019 Redistributable (x64)的最新版(2023 年 10 月更新)。
这个案例教会我:环境配置的终点,不是“能跑”,而是“在目标环境中稳定运行”。你永远不知道客户的 Windows 补丁级别、杀毒软件策略、甚至 BIOS 设置会对你的 DLL 加载产生什么影响。所以,我的建议是:在你的开发机上配好后,立刻用一台全新的、只装了 Windows 10/11 的虚拟机,重复整个安装流程,这才是真正的“交付验证”。
4.2 终极避坑指南:5 条血泪换来的铁律
- 永远不要在路径中使用空格和中文:
C:/My Projects/opencv是灾难之源。C:/opencv是唯一安全路径。 - Qt 和 OpenCV 的位数(x64/x86)必须绝对一致:Qt 是 x64,OpenCV 就必须是
x64/vc16,绝不能混用x86/vc16。 .pro文件修改后,必须点击qmake按钮(锤子图标):Qt Creator 不会自动重新解析.pro,你改了LIBS,不点qmake,等于没改。- 运行时 DLL,必须放在可执行文件(
.exe)的同一目录下:不是项目源码目录,不是构建目录,而是最终生成的debug/QtTest.exe所在的debug文件夹。 - 如果一切看起来都对,但还是失败,请删除
build-*文件夹,重新qmake+Rebuild:Qt 的构建缓存(Makefile,moc_*.cpp)有时会残留旧配置,清理是最高效的重置方式。
最后再分享一个小技巧:当你需要在多个项目中复用 OpenCV 配置时,不要在每个.pro文件里重复写LIBS +=。创建一个opencv.pri文件,内容为:
OPENCV_DIR = C:/opencv/build INCLUDEPATH += $$OPENCV_DIR/include LIBS += -L$$OPENCV_DIR/x64/vc16/lib \ -lopencv_core480 \ -lopencv_imgproc480 \ -lopencv_imgcodecs480 \ -lopencv_videoio480 \ -lopencv_highgui480然后在每个项目的.pro文件末尾,加上include(opencv.pri)。这样,未来升级 OpenCV,你只需改一个opencv.pri文件,所有项目自动同步。这个技巧,是我给某公司培训时,他们工程师当场记在笔记本首页的。