必须勾选“使用 c++ 的桌面开发”工作负载并启用msvc工具集、windows sdk和cmake工具;运行vcvars64.bat使cl.exe全局可用;新建项目选正确模板并设置匹配的平台工具集和运行时库(/md、/mdd或/mt)。

确认安装时勾选了“使用 C++ 的桌面开发”工作负载
这是整个流程的起点,漏掉这个选项,后续所有操作都会失败。VS Installer 界面里它不是默认勾选的,必须手动点开并确认。光勾这个还不够,点击右侧的“安装详细信息”,确保以下三项已启用:
-
MSVC v143 - VS 2022 C++ x64/x86 生成工具(若用 VS 2019 则是v142) -
Windows 10/11 SDK(至少选一个,推荐最新版,如10.0.22621.0) -
CMake 工具(Visual Studio 内置)(方便后期做跨平台或模块化构建)
不勾 SDK 会导致 #include <windows.h></windows.h> 报错;不勾 MSVC 工具集则 cl.exe 根本不存在,命令行下运行 cl 会提示“不是内部或外部命令”。
验证 cl 编译器能否在命令行中直接调用
很多开发者以为 IDE 能编译就万事大吉,结果一写 CI 脚本或调用外部构建工具就崩。关键是要让 cl.exe 在任意 cmd 或 PowerShell 中可用。
执行这一步最稳妥的方式是运行 VS 提供的环境初始化脚本:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
注意路径要和你实际安装版本、位数(vcvars64.bat 对应 x64,vcvars32.bat 对应 x86)、版本(2022 / 2019)严格匹配。运行后立即执行 cl,能看到版本输出才算通过。
如果想永久生效,可把该脚本内容加到系统启动批处理里,但更推荐每次构建前显式调用——避免不同项目混用工具集导致链接失败。
新建项目时选对模板并检查平台工具集
创建 Windows 桌面应用,不要选“控制台应用”完事。真正做 GUI 或系统级程序,应从以下模板入手:
- 空项目(
Empty Project):完全自主控制入口、链接选项,适合 Win32 API 或服务开发 - Windows 桌面向导(
Windows Desktop Wizard):自动生成WinMain、资源文件、消息循环骨架 - MFC 应用(需额外勾选安装组件):适合传统桌面 UI,但注意 MFC 是静态链接还是动态链接会影响部署
新建后右键项目 → 属性 → 配置属性 → 常规 → 平台工具集,必须是 v143(VS 2022)或对应版本。如果显示 v142 却装的是 VS 2022,说明项目被降级或继承了旧配置,得手动改回来,否则可能链接 msvcp140.dll 版本错乱。
调试前务必确认运行时库与部署方式匹配
项目属性 → C/C++ → 代码生成 → 运行时库,这个设置直接影响你最终分发时要不要打包 VC Redistributable:
-
/MDd(调试多线程 DLL):依赖msvcp140d.dll和ucrtbased.dll,仅限本地调试,不能发给用户 -
/MD(发布多线程 DLL):依赖msvcp140.dll和ucrtbase.dll,用户需安装 Microsoft Visual C++ 2015–2022 Redistributable -
/MT(静态链接):不依赖外部 CRT,exe 更大,但部署最简单;缺点是无法热更新 CRT 修复,且部分 Windows API 功能(如某些std::filesystem行为)可能受限
最容易被忽略的一点:即使你用了 /MD,如果目标机器没装对应年份的 Redistributable(比如你的程序用 VS 2022 编译,用户却只装了 VS 2019 的),依然会弹出“缺少 VCRUNTIME140_1.dll”错误。所以发布前一定要用 dumpbin /dependents yourapp.exe 查看真实依赖项。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











