VS开发工具集合小结
在不同版本的 Visual Studio 中使用不同工具集合进行开发时,存在一些容易混淆的配置细节。本文结合本地环境,梳理 平台工具集(Platform Toolset)、Windows SDK、宿主/目标架构等核心概念及其搭配关系,帮助快速定位 "我这能编译、你那边报错" 一类的问题。
一、VS 开发项目核心设置
在 Visual Studio 项目属性的 常规 页面中,有三个核心配置项(如下图所示):
- Windows SDK 版本(Windows SDK Version):决定可用 API 和头文件范围
- 平台工具集(Platform Toolset):决定编译器、链接器等构建工具的版本
- C++ 语言标准(C++ Language Standard):决定支持的 C++ 特性(如 C++17 / C++20)
下文以本地安装的环境为例,逐一介绍。
二、平台工具集(Platform Toolset)
2.1 VS 版本与默认工具集的对应关系
本地安装了三种平台工具集,如下图所示:
分别为 v145、v142、v141。每个 Visual Studio 版本在安装时会自带一个默认平台工具集:
| VS 版本 | 默认平台工具集 |
|---|---|
| VS 2026 | v145 |
| VS 2022 17.8+ | v144 |
| VS 2022 | v143 |
| VS 2019 | v142 |
| VS 2017 | v141 |
2.2 平台工具集包含的内容
每个平台工具集是一整套构建工具的集合,具体包括:
- 编译器
cl.exe - 链接器
link.exe - 库管理器
lib.exe - 汇编器
ml.exe/ml64.exe - C/C++ 标准库:含运行时库(CRT)和 STL 库
- Windows SDK 头文件和库
- 调试信息生成工具
- Manifest 工具
mt.exe
注意:平台工具集默认 不包含 ATL / MFC 的头文件和库。如需使用,请在
工具→获取工具和功能→单个组件中下载对应平台工具集的 ATL/MFC 组件。
从上图可以看出,不同平台工具集的 ATL/MFC 版本不同,不能混用。
2.3 工具集的独立性
同一个 Visual Studio 可以安装多个版本的平台工具集。但每个 VS 版本下的工具集是 独立维护 的——例如 VS 2026 中的 v143 与 VS 2022 中的 v143 是两套完全不同的工具链,版本号相同并不代表二进制兼容。
三、编译器布局:Host 与 Target 架构
以编译器 cl.exe 为例,每套平台工具集下按 宿主架构(Host Architecture)和 目标架构(Target Architecture)划分多个版本:
本地安装了 v145、v142、v141 三个平台工具集,每个工具集下均有 4 个 cl.exe,目录布局为 bin\Host<宿主架构>\Target<目标架构>。
3.1 宿主架构(Host)
编译器进程运行的操作系统架构:
x64——运行在 64 位 Windows 上x86——运行在 32 位或 64 位 Windows 上
3.2 目标架构(Target)
生成的可执行程序位数:
x64——生成 64 位可执行程序x86——生成 32 位可执行程序
两两组合共 4 种搭配。32 位编译器进程可用内存存在上限,当前绝大多数开发机为 64 位系统,推荐优先使用 Hostx64 工具链。
3.3 VS 2026 开发命令行
基于上述布局,Visual Studio 2026 下 4 种开发命令行的作用如下:
四、Windows SDK
每个版本的 Windows 系统对外提供一套 Windows SDK(Software Development Kit),用于支持该系统的程序开发。SDK 包含:
- 头文件:如
windows.h、winuser.h等 - 导入库:如
kernel32.lib、user32.lib等 - 工具:
rc.exe(资源编译器)、midl.exe(IDL 编译)、signtool.exe(签名)等
SDK 默认安装路径:
C:\Program Files (x86)\Windows Kits\10\
4.1 SDK 版本与兼容性
同一套平台工具集可以搭配不同版本的 SDK。SDK 版本决定你能使用哪些 API,而不是强制要求目标系统版本。只要不调用目标系统不支持的 API,程序即可兼容运行。例如:使用 Windows 10 SDK 开发的程序,若调用了 Win 10 特有而 Win 7 不存在的 API,则无法在 Win 7 上运行。
选新 SDK 不强制要求新系统,但调用新 API 时必须确保目标系统支持。
4.2 团队协作建议
统一 SDK 版本并将其写入项目属性或 README,避免 "我这能编译、你那边报错" 的问题。
要点总结
- 平台工具集 决定编译器、链接器等构建工具版本;每个 VS 版本自带一个默认工具集,可额外安装其他版本。
- 相同版本号的平台工具集在不同 VS 版本下 独立维护、不保证兼容。
- 编译器按
Host<Target架构布局,64 位开发机应优先使用Hostx64工具链。 - Windows SDK 版本 决定可用 API 范围,选择高版本 SDK 不意味着程序只能在高分辨率系统上运行——关键在于实际调用了哪些 API。
- ATL/MFC 需按平台工具集单独安装,不同工具集的 ATL/MFC 不可混用。
- 团队协作时应统一 SDK 版本并写入项目配置或文档。






浙公网安备 33010602011771号