v120_xp 和 VS 2013 上的 v120 有什么区别?

What is the difference between v120_xp and v120 on VS 2013?

我正在 VS 2013 上开发 MFC 应用程序。

当我使用 WIN32 平台选项构建应用程序时,我的应用程序没有在 WIN XP 32 位上执行。

我通过设置'v120_xp Platform Toolset'来处理这个问题。

在执行此操作时,我发现 'v120_xp' 项已添加到 'v_120_xp Platform Toolset'。
我想知道 v120_xp 和 v120 在 VS2013 上的区别? 有谁知道他们为什么分开以及这两者的工作方式有何不同?

v120_xp 是针对 XP SP3 的 C++ 工具链。另一个 v120 目标高于 XP。 XP 工具链生成代码并使用仅限于 XP SP3 的系统函数调用。

MSDN articles and blogs 开始,内部差异与 XP 上不可用的平台改进有关;

  1. 构建 HLSL
  2. 调试 DirectX
  3. 静态分析
  4. 远程调试
  5. 进程状态API

为 XP SP3 生成的代码仍然(通常)在更高版本的 OS 上工作,但是您不能使用 v120 工具来针对 XP,只能针对 Vista 和更高版本。本来他们不打算支持 XP,但由于需求,添加了它(在 public 测试阶段 IIRC)。