3

我想使用针对 XP 环境的 Visual Studio 2013 创建一个 C++ 程序,我知道项目属性 - > 配置选项卡中的 UI 选项来设置平台工具集顶部 Windows v120_xp,我想使用命令来实现行选项。怎么做。

对于 Visual Studio 2012,我知道该选项

设置 CL=/D_US​​ING_V110_SDK71_;%CL%

我正在寻找类似的选项是 Visual Studio 2013。你能帮忙吗?

4

1 回答 1

6

_USING_V110_SDK71_ 宏与构建与 XP 兼容的程序无关,它只是一个副作用。基本选项是链接器选项/SUBSYSTEM。请注意此选项如何让您指定主要和次要子系统版本号。如果您将此选项设置为 5,1,您的程序只能在 XP 上运行。从 VS2012 开始,默认设置为 6,0,即当前一代 Windows 的版本号。运行此类程序需要 Vista 或更高版本。

这实际上是一件大事,降级版本号会打开 Windows 中的一些应用程序兼容垫片,这些垫片旨在处理宣布它对现代 Windows 版本一无所知的程序。尤其是 Aero 对窗口指标的谎言,旨在让一个古老的程序仍然可以在宽窗口边框下运行。

CRT 也受到影响,与线程和本地化相关的相当模糊的细节。当然需要测试。记住支持这样一个古老的操作系统的成本。

最后但同样重要的是,您还需要使用适当的 SDK 版本。最后一个仍然与 XP 兼容的是 v7.1。如果您从命令行构建,那么您将获得 8.1,您需要首先通过设置 %WindowsSdkDir% 环境变量来修复它。并且您需要在#include Windows.h 的标头中设置目标 Windows 版本,希望是预编译的标头。将 _WIN32_WINNT 定义为 0x501 以匹配 XP 并避免意外使用 XP 上不可用的 winapi 函数。

于 2014-04-29T11:05:46.663 回答