VS开发工具集合小结

在不同版本的 Visual Studio 中使用不同工具集合进行开发时,存在一些容易混淆的配置细节。本文结合本地环境,梳理 平台工具集(Platform Toolset)、Windows SDK宿主/目标架构等核心概念及其搭配关系,帮助快速定位 "我这能编译、你那边报错" 一类的问题。

一、VS 开发项目核心设置

在 Visual Studio 项目属性的 常规 页面中,有三个核心配置项(如下图所示):

image.png

  • Windows SDK 版本(Windows SDK Version):决定可用 API 和头文件范围
  • 平台工具集(Platform Toolset):决定编译器、链接器等构建工具的版本
  • C++ 语言标准(C++ Language Standard):决定支持的 C++ 特性(如 C++17 / C++20)

下文以本地安装的环境为例,逐一介绍。

二、平台工具集(Platform Toolset)

2.1 VS 版本与默认工具集的对应关系

本地安装了三种平台工具集,如下图所示:

image.png

分别为 v145v142v141。每个 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 组件。

image.png

从上图可以看出,不同平台工具集的 ATL/MFC 版本不同,不能混用

2.3 工具集的独立性

同一个 Visual Studio 可以安装多个版本的平台工具集。但每个 VS 版本下的工具集是 独立维护 的——例如 VS 2026 中的 v143 与 VS 2022 中的 v143 是两套完全不同的工具链,版本号相同并不代表二进制兼容。

三、编译器布局:Host 与 Target 架构

以编译器 cl.exe 为例,每套平台工具集下按 宿主架构(Host Architecture)和 目标架构(Target Architecture)划分多个版本:

image.png

本地安装了 v145v142v141 三个平台工具集,每个工具集下均有 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 种开发命令行的作用如下:

image.png

四、Windows SDK

每个版本的 Windows 系统对外提供一套 Windows SDK(Software Development Kit),用于支持该系统的程序开发。SDK 包含:

  • 头文件:如 windows.hwinuser.h
  • 导入库:如 kernel32.libuser32.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 版本并写入项目配置或文档。
posted @ 2026-08-19 15:01  浩天之家  阅读(6)  评论(0)    收藏  举报