Visual Studio 2013 for Targeting XP的Visual C++编译器标志

Visual C++ Compiler Flag for Visual Studio 2013 for Targeting XP

本文关键字:Visual C++ 编译器 标志 Targeting Studio 2013 for XP      更新时间:2023-10-16

我想用Visual Studio 2013创建一个针对XP环境的C++程序,我知道"项目属性"->"配置"选项卡中的UI选项可以设置"平台工具"机顶盒Windows v120_XP,我想使用命令行选项实现这一点。如何做到这一点。

对于visual studio 2012,我知道选项

设置CL=/D_USING_V110_SDK71_;%CL%

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

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

这实际上是一件大事,降低版本号会打开Windows中的一些应用程序兼容垫片,这些垫片旨在处理一个宣布对现代Windows版本一无所知的程序。特别是Aero在窗口度量方面的谎言,旨在允许一个古老的程序仍然使用胖窗口边界运行。

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

最后但同样重要的是,您还需要使用合适的SDK版本。最后一个仍然与XP兼容的是v7.1。如果从命令行生成,则会得到8.1,需要先设置%WindowsSdkDir%环境变量来解决此问题。您需要在头文件中设置目标Windows版本,其中#包含Windows.h,希望是预编译头文件。将_WIN32_WINNT定义为0x501以匹配XP,并避免意外使用XP上不可用的winapi函数。