VS2013 "v120_xp" 默认作为平台工具集

Posted

技术标签:

【中文标题】VS2013 "v120_xp" 默认作为平台工具集【英文标题】:VS2013 "v120_xp" as platform toolset by default 【发布时间】:2014-08-06 01:58:20 【问题描述】:

为了在 Windows XP 下部署使用 VS2013 编译器构建的 C++ 应用程序,必须设置“v120_xp”平台工具集:这使得从 XP 到 8.1 的部署成为可能。那么接下来的问题是:为什么这个平台工具集不是唯一的和默认的? “v120”平台工具集适用于从 Windows Vista 开始。有任何性能缺陷吗?我已经在 Windows 8 下测试了针对这两种平台工具集构建的应用程序,但我发现性能没有差异(显然......)。

【问题讨论】:

不,性能不受影响。兼容性很重要。 兼容性是什么意思? v120_xp 平台工具集支持从 Windows XP 到 8.1 我对这里的您的实际问题感到困惑。您是否在问选择“v120_xp”作为您的平台工具集意味着什么?你问有什么缺点?您是否在问如何将此设置设为新项目的默认设置?这里可能有一个很好的问题,只是没有很好地解释。考虑editing。 @CodyGray:我要问的是为什么这个平台工具集 (v120_xp) 不是默认的,因为它使您的 C++ 项目在从 Windows XP 到 Windows 8.1 的操作系统中运行。默认的是 v120,与 Windows XP 不兼容。我相信大多数开发人员仍然需要在 C++ 项目中支持 Windows XP,所以我不明白为什么有人会选择 v120。 可能是战略营销问题。如果开发者部署不兼容 Windows XP 的应用程序,微软最终可以“杀死”Windows XP 并销售更多的 Windows 8。这可能是它默认的原因。 【参考方案1】:

有很多事情是您无法使用 XP 专用工具集完成的 - 它使用旧的头文件和库,因此使用它构建的应用程序无法调用许多较新的 API 并使用一些花哨的更新工具。一个值得注意的例子是 DirectX - 引用 this MS page:

在构建支持旧版 Windows XP 平台的应用程序时, 您使用的平台头文件和库集类似于那些 随 Windows 7.1 SDK 而不是 Windows 8.x SDK 提供 集成的 DirectX SDK 内容(请参阅 DirectX SDK 在哪里?)。 许多“DirectX”头文件和库都包含在这些文件中 Windows XP 兼容的平台标头(请参阅某个特定的 DirectX SDK 年龄),例如 Direct3D 9、DirectSound 和 DirectInput。你会, 但是,需要继续使用旧版 DirectX SDK for Windows XP D3DCompile API (#43) 的兼容版本,旧版 D3DX9, XAUDIO2、XINPUT 和 PIX for Windows 工具(Visual Studio 2012 图形调试器不支持 Direct3D 9 应用程序)。

Windows SDK 7.1A 作为 VS 2012 Update 1 的一部分安装,用于 “v110_xp”平台工具集,其中包含头文件、库、 以及最初在 Windows SDK 中提供的工具子集 7.1。作为此 7.1 时代工具集的一部分,较旧的 Direct3D 10 和 Direct3D 11 标头与 Windows 8.x 相比已过时 使用标准“v110”平台工具集的 SDK 版本,特别是 Windows 7 上的 Windows 8.0 SDK 安装的 SDK 调试层和 Windows 8。因此不推荐使用平台工具集“v110_xp” 用于开发 DirectX 11 应用程序,但在技术上可以做到 谨慎一点。 Windows SDK 7.1A 不包含 dxguid.lib 所以 必须通过使用在项目中本地定义所需的 GUID 在您的 .cpp 文件之一中定义 INITGUID,或使用旧的 DirectX SDK 版本。

【讨论】:

以上是关于VS2013 "v120_xp" 默认作为平台工具集的主要内容,如果未能解决你的问题,请参考以下文章

如何使用vs2013的NMake在cmake中设置v120xp

怎么让VS2015编写的程序在XP中顺利运行

VS2017 和 Win7/XP 上缺少“api-ms-win-core-rtlsupport-l1-2-0.dll”

VS2012 nmake使用v110_xp工具集?

更新vs2019 后,在指定-T v141_xp情况下载编译会报下面warning MSB8051

更新vs2019 后,在指定-T v141_xp情况下载编译会报下面warning MSB8051