VS2015 + Qt 5.14.2 在 Win10 下的安装配置与踩坑指南 📅 发布时间:2026/9/18 19:46:20 👁 浏览次数: 现在新项目我基本只用VS 2022说实话谁闲得没事去折腾Visual Studio 2015这种老古董但上周帮朋友调试一套工厂设备的上位机对方整套软件环境锁死了——Win10 VS2015 Qt 5.14.2我被迫把这几个老家伙重新请出来。装之前我以为很简单结果过程中连续踩了好几个坑Qt版本装了个mingw的VS扩展装错了版本链接阶段报qtmaind.lib找不到……忙活了一下午才把环境彻底跑通。这篇文章记录的就是这次完整经历。我会从版本选择开始讲而不是直接甩安装包链接让你一路点“下一步”。因为这套组合的问题绝大多数都出在“选择”上选错编译器、选错工具集、选错Qt套件后面做再多配置都是白费。文章适合两类人一是接手老项目被要求在VS2015 Qt 5.14.2环境下继续开发的工程师二是自己学Qt搜索教程时看到别人用这套老组合但又不想被各种报错劝退的新手。看完你至少能搞清楚一件事VS和Qt之间的版本关系到底是什么。先说我的测试环境Windows 10 21H2 64位系统Visual Studio 2015Update 3Qt 5.14.2 msvc2015_64套件Qt VS Tools扩展2.7.2版本。这套环境在Win10上能正常运行后面也会具体说兼容性边界在哪里。1. 为什么还在用VS 2015 Qt 5.14.21.1 这套老组合的真实定位先说一个可能让很多人意外的事实直到今天依然有大量工业软件、医疗设备、传统制造企业的上位机程序跑在VS2015 Qt 5.14.x这个组合上。原因很简单设备供应商的SDK只在这个环境下测试过或者现场其他工控软件依赖了特定版本的运行时库。你用了VS2022编译出来的程序拿到人家现场反而可能起不来。那为什么偏偏是Qt 5.14.2看Qt的发布历史会发现5.14是5.12 LTS之后的一个过渡版本但5.14.2修复了一批关键bug尤其是和高分屏、DirectWrite以及Windows 10 1909的兼容问题稳定度比5.14.0好了一大截。很多企业那时候刚从5.6/5.9开始规划升级看到5.14.2表现不错项目一半就定在这了。所以你在2025年接手一个还在用VS2015的老项目时Qt版本大概率就是5.12、5.14或5.15这几个之一。1.2 为什么选用msvc2015套件而不是msvc2017或MinGW这是新手最容易犯错的第一个点。很多人在Qt安装器里看到“msvc2015_64”“msvc2017_64”“mingw73_64”一堆选项随手选了一个后面编译时各种莫名其妙。我之前见过一个新手选了个mingw73_64编译Qt项目但VS2015里根本没有MinGW的编译器。Qt Creator用MinGW当然行可VS项目必须使用MSVC工具链。反过来如果你装了Qt的msvc2015_64套件却拿VS2022去编译Qt官方对你说“不保证兼容”虽然某些情况下能通过但常见的问题是链接器版本不同导致符号差异或UCRT版本冲突。1.3 Qt版本和VS版本是怎么对应的这里我用最直白的方式说。Qt官方把预编译二进制分成两类一类指定MSVC编译器另一类指定MinGW编译器。MSVC这一类又按VS主版本区分msvc2015、msvc2017、msvc2019。你需要根据编译器版本选对应的Qt包。严格来说msvc2017和msvc2019的包并不完全兼容VS2015的v140工具集因为MSVC的标准库实现细节有差异。所以稳妥方案就是VS2015对应msvc2015这是规则。其中msvc2015_64对应64位程序msvc2015对应32位。这套对应关系一定要刻进脑子里。它决定的不只是“能不能编译”还包括能否用上官方预编译的Qt库文件以及Debug/Release各应该配哪套依赖。2. 安装之前先把版本、下载和共存问题理清2.1 检查系统版本与安装兼容性关于Win10微软对VS2015的官方支持路径很明确。Win10 1607等早期版本上某些Windows SDK功能和Qt的窗口行为会有差异。为了省心建议至少是Windows 10 1809以上的版本。我环境是21H2测试下来没问题。如果你的机器是虚拟机或共享开发机操作前先留意一下系统的更新级别这一步在安装前确认好能省掉很多后续的麻烦。2.2 排解安装阶段的安全软件干扰补充一句Windows Defender实时防护或第三方杀毒软件在解包Qt大型组件时可能误报导致安装文件损坏或扩展激活失败。这个出现的概率不高但一旦出现就很隐蔽。碰到莫名奇妙的安装失败可以把实时保护临时关掉再装装完立刻打开。但不要为了省事长期关闭系统防护得不偿失。2.3 正确拿到VS2015安装介质VS2015的安装文件可以从微软官网下载建议直接用Community版个人开发者和开源项目使用完全够用。这里我不展开讲授权细节只想强调一点务必安装带Update 3的版本。Update 3修复了大量Win10兼容性问题并附带较新的Windows SDK组件。没有Update 3的话后续在Win10上编译C项目经常会碰到奇奇怪怪的运行时错误。官方提供的离线ISO镜像包含安装器和全部组件装起来最省心。如果你的电脑已经装了VS2022先不用卸载VS2015可以和VS2022共存。关键在安装顺序和工具集版本先装VS2015后装VS2022中间的冲突最小。因为VS2022的安装器会识别已有旧版本并共享部分组件反过来如果你装了VS2022再去装VS2015也不是不行但环境变量和默认C工具链的指向会乱掉容易造成后续命令行编译时调错编译器。我实际测试下来先旧后新是最省心的。2.4 Qt 5.14.2安装器的下载与路径规划Qt的安装方式现在一律走在线安装器。官网会要求注册Qt账户下载时会让你勾选开源协议注意不要勾成商业协议。安装器本身不大真正费时间的是下一步选中Qt 5.14.2套件后的下载过程整套msvc2015_64大概是2GB左右。我现在习惯把安装路径写成“D:\Qt\Qt5.14.2”不建议装到带空格或中文的路径。路径里有空格虽然VS能勉强处理但遇到一些老项目或自动化脚本时就会出现莫名其妙的“无法打开包含文件”或“找不到Qt5Cored.dll”的坑。保持纯英文路径这是多年Windows开发养成的习惯放到今天一点也没有过时。2.5 多版本VS共存先旧后新才省心如果你同机还需要保留VS2019或VS2022要注意sln文件的版本。VS2015的解决方案文件格式可以被更高版本的VS打开但高版本VS打开旧项目后默认可能会问你“是否升级工具集”。这时候一定要选择“不升级”保留v140工具集否则Qt msvc2015库的二进制兼容性就被破坏了。我在实际中见过一个很典型的情况同事用VS2022打开了VS2015创建的Qt工程顺手选择了“Retarget Projects”把平台工具集改成了v143结果编译出来一大堆链接错误。后来发现错误原因根本不是代码而是Qt库还是msvc2015的。这种问题一旦发生往往会被误判为Qt版本和VS不兼容其实唯一的错误就是运行时库/工具集没对上。3. VS2015的安装讲究的是组件选择3.1 自定义安装中必须勾选的组件VS2015安装界面虽然是老式的但选项还是要细心看。对Qt开发来说必须要勾选的是“Visual C”相关功能。在中文版里一般是“编程语言 - Visual C”展开后建议勾选“C工具”、“Windows 8.1 SDK”和“Windows 10 SDK”如果安装器列出了的话。不做UWP或Windows Store开发的话UWP相关的组件都可以忽略。需要特别提醒有些系统如果没有装Windows 10 SDK会影响Qt项目编译时对最新Windows头文件的引用尤其是用到Win10新增API时会出现“无法打开windows.h”。Windows SDK可以在VS安装器里按需补装。这个问题我当时装的时候没注意后来因为一个系统接口编译不过去回头查了半天才发现是SDK缺了。3.2 安装Update 3的坑如果先装了VS2015原版再打Update 3过程中可能会卡在“正在更新共享组件”这一阶段。多数情况下是网络原因或者机器上某个组件被占用。比较有效的处理办法是用管理员身份运行安装器并关闭正在运行的VS进程再尝试“Repair”。不过说实话最稳妥的路线是直接下载带Update 3的离线ISO镜像一次性装好。ISO里可选组件更全包括Win10 SDK等都会一并打包。虽然下载体积较大但省事程度比在线补丁包高得多。这也是我给企业用户的建议不要用在线安装器去慢慢拖直接用完整ISO镜像离线安装速度和时间都更可控。3.3 验证VS2015是否安装成功安装完成后可以这样快速验证打开Visual Studio新建一个“Visual C - Windows控制台应用程序”直接编译运行一个Hello World。确认新建项目模板列表里能看到C相关模板说明C组件是完整安装的。这一步不能省。我见过有人装完VS2015后Qt集成搞了很久都不行最后回头发现是VS里C模板都没装完整。对这种基础环节的验证越早做越好。4. Qt 5.14.2安装重点在套件和组件4.1 在Qt安装器中准确选择msvc2015_64Qt在线安装器打开后会经过注册、登录步骤。接着进入“Select Components”这里是关键窗口。展开Qt - Qt 5.14.2你会看到一堆复选框msvc2015_64 —— 64位MSVC2015编译的Qt库我们需要这个msvc2015 —— 32位MSVC2015编译的Qt库做32位程序时用msvc2017_64 / msvc2019_64 —— 其他VS版本对应的包mingw73_64 —— 需要用MinGW编译器时才会选我建议只勾选msvc2015_64除非你确定需要32位版本否则不要贪多。把msvc2017、msvc2019、mingw全选上的做法除了多占磁盘和让套件列表混乱之外没有任何好处。装完之后Qt Creator会自动扫描到msvc2015_64套件但我们要用的是VS集成所以先不必急着打开Qt Creator。另外还有“Qt Debug Symbols”和“Qt Sources”可选项普通开发不用装。如果你的生产环境需要调试Qt源码建议把Sources勾上Symbols一般不用除非你要配合WinDbg做崩溃分析时才需要。4.2 Qt的安装路径与后续工具路径安装器会让你设置安装目录建议写成“D:\Qt\Qt5.14.2”类似的结构。注意安装路径不要包含中文和空格否则VS集成时解析qmake路径容易出问题。安装完成后Qt工具包目录会自动按版本创建例如“D:\Qt\Qt5.14.2\5.14.2\msvc2015_64”bin目录下的qmake.exe路径后面配置Qt VS Tools时要手工指定一次这个位置一定要记牢。顺便提一句Qt默认还会在开始菜单里创建一个Qt命令行快捷方式“Qt 5.14.2 (msvc2015 64-bit)”这个终端会在环境变量里临时注入Qt路径后面用windeployqt做发布时很方便。4.3 Qt Creator和VS集成工具的关系很多人有一个误解以为用VS开发Qt就必须安装Qt Creator。其实Qt Creator是可选的IDE。VS里真正干活的是Qt VS Tools扩展负责调用Qt库和qmake。Qt Creator更多是用来做可视化界面、查看类文档或者用qmake独立构建。如果你只用VS写Qt那么装完Qt库本体之后Qt Creator甚至可以不装。当然作为参考工具装上也很好但别把扩展配置和Qt Creator配置搞混。简单梳理这三者的关系Qt库实际的框架二进制和头文件Qt Creator可选的IDEQt VS ToolsVS内部的扩展负责把Qt库和VS的MSVC工具链对接把这条关系理清楚配置的时候就不会慌。5. VS2015里的Qt集成Qt VS Tools的正确打开方式5.1 选对扩展版本老一点的教程会让你装“Visual Studio Add-in for Qt5”但这个插件在Qt 5.14时代已经不太维护了而且大概率也搜不到适配VS2015的新版。正确的做法是安装“Qt VS Tools”它在VS扩展管理器或VSIX安装包中都可以获取。需要注意Qt VS Tools各版本要求的VS版本不同。对VS2015来说选用2.x版本即可。我这次用的2.7.2在VS2015上表现稳定。如果你装的是最新的Qt VS Tools可能会看到它要求VS2017或更高版本这时候就要回到旧版扩展。安装扩展的方式下载VSIX文件后直接双击VS会询问是否安装一路“是”。或者打开VS菜单“工具 - 扩展和更新”从“联机”搜索Qt VS Tools也可以。不过在线搜到的版本往往比较新可能出现不兼容所以我一般直接用VSIX离线安装指定版本。5.2 配置Qt Versions路径扩展安装完成后打开VS菜单会多出一项“Qt VS Tools”。进入Qt VS Tools - Qt Versions这里需要添加刚才安装的qmake.exe所在目录例如“D:\Qt\Qt5.14.2\5.14.2\msvc2015_64\bin\qmake.exe”或者直接指定上面的qt bin目录。完成后列表中会出现一条记录版本显示5.14.2。保存后VS就知道你的Qt库在哪里了。这一步相当于建立了Qt与VS之间的桥梁。没有这一步后面新建Qt项目时会找不到任何可用Qt版本。5.3 新建Qt项目并检查自动配置配置好Qt Versions之后在VS中“新建项目”左侧选择“Visual C - Qt”右侧会出现“Qt Widgets Application”等模板。选中后向导会让你选择要使用的Qt版本。此时下拉框中应能看到“5.14.2”选择它并勾选“默认”。向导生成的.vcxproj文件会自动把Qt的include、lib路径和依赖项写入工程配置里。我建议新建项目时注意一下“Project name”和“Location”要避免中文路径。向导生成后先右击项目 - 属性展开“配置属性 - 调试”查看“环境”一栏你会发现插件自动写了类似“PATH$(QTDIR)\bin;%PATH%”的字段这说明默认配置是正确的。很多手动集成失败的项目这一栏全靠手写很容易遗漏。6. 第一次测试把Qt窗口程序跑起来6.1 创建最简单的Hello Qt工程我这里用最简的步骤来测试VS2015里“文件 - 新建 - Qt Widgets Application”。类名写MainWindow基类默认QMainWindow。打开main.cpp确认代码如下#include mainwindow.h #include QApplication int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }这段代码就是Qt Widgets应用最基本的入口。它创建了一个QApplication对象然后展示主窗口进入事件循环。如果这一步编译运行没问题说明VS和Qt的整个链路都是通的。6.2 编译模式与工具集匹配编译前建议先在VS顶部把配置切换成“Debug x64”原因有两条Debug模式下可以看到更详细的错误信息方便定位问题。如果Release模式报错了错误信息往往被优化掩盖初学者很容易懵。同时确认项目属性中的“平台工具集”是“Visual Studio 2015 (v140)”不要变成v143或其他。虽然我们用VS2015打开项目时默认就是v140但如果工程文件曾被其他版本VS动过就可能被改成别的工具集这点要单独确认。6.3 生成解决方案并运行上面的步骤都确认后直接“生成 - 生成解决方案”。如果生成成功按F5开始调试。正常情况下屏幕上会弹出一个空白Qt窗口。到这里安装和配置环节就算真正跑通了接下来就是你自己发挥的时间。6.4 发布时补充运行库这里顺便提一个很多人会忽略的细节Qt的msvc2015_64库并不能像MFC那样把运行时完全静态链接到EXE里发布于未安装Qt的机器时要用windeployqt工具自动拷贝依赖的DLL和plugins。具体来说在Qt命令行终端中进入你的Release输出目录执行cd /d D:\build\MyApp\release D:\Qt\Qt5.14.2\5.14.2\msvc2015_64\bin\windeployqt.exe MyApp.exe之后再把Release目录整体拷到目标机器上运行。这套发布流程虽然简单但很多人忘了指定正确的Qt目录导致分发后在目标机器上启动报“找不到Qt5Widgets.dll”之类的问题。用windeployqt拷贝完后建议看一眼输出目录里的platforms文件夹是否存在没有的话程序大概率起不来。7. 我在Win10下碰到的高频坑这一节我把实际踩过的、以及在线答疑时经常看到的几个问题集中写一下。每个问题都尽量给出排查思路而不只是贴“把XX目录加进环境变量”这种一句话结论。7.1 报错LNK1104无法打开文件“qtmaind.lib”这个问题有九成概率是Qt版本路径配置错了。症状是在链接阶段提示找不到qtmaind.libDebug版或qtmain.libRelease版。原因一般是VS里的Qt Versions没配好或者选错了套件。建议按顺序排查确认Qt VS Tools中Qt版本路径指向的是msvc2015_64/bin目录不是mingw73_64/bin。打开项目属性查看“链接器 - 常规 - 附加库目录”应包含“你的Qt路径\lib”。查看“C/C - 常规 - 附加包含目录”应包含“你的Qt路径\include”。如果这三处都对还报错就把项目属性里的“链接器 - 输入 - 附加依赖项”截图看一下是否有qtmaind.lib和Qt5Cored.lib。通常老工程迁移过来附加依赖项会被清空需要手动加回或者右键工程执行“Qt VS Tools - Update Qt Project”重新生成。7.2 头文件找不到No such file or directory在VS中编译时如果系统报“fatal error C1083: 无法打开包含文件: QMainWindow: No such file or directory”说明编译器根本没有参与Qt的include目录。即便Qt VS Tools显示配置了版本项目也可能会丢失include路径尤其是一些模板在不勾选“导入”时很容易出现。最简单的解决方式右键工程“Qt VS Tools - Update Qt Project”。这个功能会重新拉取Qt模块的include/lib配置。我遇到过旧项目改了.pro文件后没有执行这个更新导致新增的类报头文件找不到就是靠这个操作解决的。7.3 链接器警告LNK2038或运行时库不匹配如果项目配置里引入了不匹配的运行时库方式很容易出现LNK2038“RuntimeLibrary mismatch”。常见场景是Qt库本身是MD或MDd而你在VS项目里把运行库设成了MT或MTd。标准配置应该是Debug多线程调试DLL/MDdRelease多线程DLL/MD排查入口项目属性 - C/C - 代码生成 - 运行库。如果发现被改成MT/MTd改回MD/MDd后重新编译。这个问题也常见于将第三方静态库和Qt混用的情况比如一个用MT编译的第三方LIB被塞进MD的Qt工程中就会疯狂报符号冲突。这种时候要么全工程统一运行库模式要么给第三方库准备对应模式的二进制。7.4 运行时找不到Qt5Cored.dll按F5启动程序时如果报“由于找不到Qt5Cored.dll无法继续执行代码”说明Qt运行时路径没有传给新进程。出现这个问题的原因一般是VS调试设置里没有把Qt的bin目录写进PATH。解决办法有三个任选其一把项目属性 - 调试 - 环境设置成PATHD:\Qt\Qt5.14.2\5.14.2\msvc2015_64\bin;%PATH%先手动到上述bin目录下双击运行生成的exe能起说明库文件没问题再回头修VS配置。把bin目录写入系统环境变量PATH但不建议因为多Qt版本混装时会引发其他程序加载错Qt库。我推荐第一种方式它把影响范围控制在单个项目内部也能跟随解决方案一起使用。注意路径要写对反斜杠或正斜杠都可以。7.5 VS2015与VS2022共存时的工具集陷阱最后说一个和本机多版本VS相关的兼容性细节。一旦系统里同时装有VS2015和VS2022用户双击一个VS2015创建的.sln文件时系统可视注册表的文件关联把文件打开方式指向最新版VS于是VS2022被启动。如果你的Qt项目默认用v140工具集VS2022可能提示需要重置平台工具集如果误选升级整个工程的平台工具集会变成v143然后Qt msvc2015库的二进制就不匹配了。避免方法比较直接要么每次都从VS2015里用“打开项目”来选择文件要么把.sln文件的默认打开方式固定为VS2015。还可以在代码库里放一个专门说明“使用VS2015 v140工具集编译”的README提醒团队其他人。工具集版本这东西错一套就是一遍链接器错误很有必要在文档层面约束住。8. 安装完成之后的最后几步建议环境跑通不代表万事大吉。我把自己后来习惯性补做的几件事列出来供你参考。首先给系统做一个干净的环境变量整理。如果机器上原来装过其他版本的Qt建议在PATH里删除那些旧的Qt bin路径只保留当前项目用的Qt目录。否则带多个Qt版本的DLL一起出现在系统目录很容易出现程序加载到了错误版本Qt库的情况编译没问题但运行行为异常排查起来极费时间。其次把VS的“外部依赖项”目录当成一个有用的调试窗口。在解决方案资源管理器里展开“外部依赖项”你能看到当前Qt工程实际包含的头文件列表查看它们来自哪个绝对路径就能快速判断include指向是否正确。很多时候两个Qt版本混装这里一眼就能看出来被你误配到了另一套路径。再次尽量在团队或自己的长期项目里统一Qt和VS版本。这话有点像废话但我在实际维护中真见过一台机器上同时装着四个版本的Qt库每个项目配置还各不相同。最后为了一个“莫名的闪退”查了两天发现是另一个版本覆盖了本版本的Qt5Core.dll。建议给每个版本的Qt保留独立安装目录不要安装到同一个根目录下覆盖。最后如果你只是自学者不是被老项目绑住我还是建议直接上VS2022 Qt 6.x。时代在发展新工具链的效率、调试体验都比这套老组合好太多。但如果你真的需要维护这套老环境就按这篇文章的思路走一遍它足够稳定也足够被验证过。关于“Visual Studio 2015 Qt 5.14.2 在Win10下的安装配置”我能想到的坑基本都在上面了。如果你是在2025年以后看到这篇内容系统可能升级到了Windows 11不过这套组合在Win11下大体同样适用。真的遇到上面没覆盖到的问题最好的排查思路不是重装而是逐个确认Qt版本、平台工具集、附加include/lib目录三者是否完全对应。三处对齐九成问题都能解决。