用于针对XP的Visual Studio 2013的Visual C ++编译器标志

时间:2014-04-29 08:52:52

标签: c++ visual-studio-2013 compiler-options

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

对于visual studio 2012,我知道选项

设置CL = / D_USING_V110_SDK71 _;%CL%

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

1 个答案:

答案 0 :(得分:6)

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

这实际上是一个大问题,降级版本号打开Windows中的一些app-compat垫片,旨在处理一个程序宣布它对现代Windows版本一无所知。特别是Aero关于窗口指标的方式,旨在允许古代程序仍然以胖窗口边界运行。

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

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