Visual Studio 平台工具集与 Windows SDK 的区别

5
为什么Microsoft Visual Studio在同一项目中对“Windows SDK”和“平台工具集”设置有不同的配置属性? 我的理解是每个Windows SDK都提供了新版本/不同版本的平台工具集。 那么,在同一项目中指定某个Windows 10 SDK的平台工具集选项,同时将SDK选项设置为Windows 8.1 SDK,这样做有什么意义呢?
非常令人困惑。

4
请点击这里查看官方文件。基本上,工具集是您用来构建的内容(编译器、链接器、C/C++库),而SDK是您为之构建的内容(目标Windows版本)。 - dxiv
1
我记得是这样的……SDK 版本:您想要从中使用库和头文件的版本……和工具集:编译器和链接器(版本)用于构建您的代码。 - Sourabh
1个回答

4
根据文档,对于Windows目标平台,“Windows SDK版本”指定了项目所需的Windows SDK版本。 “平台工具集”允许项目针对不同版本的Visual C++库和编译器进行定位。Visual Studio C++项目可以针对Visual Studio安装的默认工具集或几个先前版本的Visual Studio安装的工具集之一进行定位,其中包括创建可在Windows XP上运行的可执行文件的工具集。
“我理解每个Windows SDK都提供新的/不同版本的平台工具集”
平台工具集由C++编译器(cl.exe)和链接器(link.exe)以及C/C++标准库组成。平台工具集与Visual Studio版本相关。例如:
Visual Studio 2015:v140
Visual Studio 2017:v141
Visual Studio 2019:v142
Windows SDK与Windows版本相关。例如:
Windows SDK(10.0.18362.0):适用于 Windows 10 版本 1903
Windows SDK(8.1):适用于 Windows 7 或 Windows Vista enter image description here

1
谢谢。这是否意味着如果我选择Windows 10 SDK,那么可执行文件将无法在WinXP、Win8.1等上运行?如果我采用VS2017和Windows 8.1 SDK的工具集场景,那么可执行文件能否直接在Win8.1上运行,还是需要在Win8.1上安装其他东西,因为我使用了最新的工具集? - user13003546
@J. Snow,Windows SDK是向后兼容的。如果您选择Windows 10 SDK,则可执行文件可以在win10、win8.1、win7和其他操作系统上运行。如果您想为Windows XP配置程序,我建议您参考文档。如果您想为Windows 8.1配置程序,只需选择win8.1sdk或最新的sdk即可。 - Jeaninez - MSFT
还有第三个令人困惑的部分 - MSVC工具集(不同版本)。您能否在回答中详细解释其关系? - SerG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接