c++ - 面向 XP 的 Visual Studio 2013 的 Visual C++ 编译器标志

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

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

对于 visual studio 2012,我知道这个选项

设置CL=/D_US​​ING_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% 环境变量来修复它。并且您需要在 header 中设置目标 Windows 版本,#include Windows.h,希望是预编译 header 。将_WIN32_WINNT定义为0x501以匹配XP,避免意外使用XP上没有的winapi函数。

关于c++ - 面向 XP 的 Visual Studio 2013 的 Visual C++ 编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23359943/

相关文章:

c++ - 依赖于其他库的库的 Libtool 版本控制

c++ - 如何使用 Visual Studio 2010 Professional 中的 C++ - 我只看到 C# 和 F# 的模板

c++ - 将 C++ 库与 Objective-C 应用程序链接和使用

tfs - TF10121 错误 Visual Studio 2013

c# - 生成的 WSDL 代理具有名为 "System"的类

c++ - TrollTech 的 Qt 教程第 11 章中令人困惑的源代码

webpack - VScode : How to autocomple json/scss/image file paths from shortcut paths specified in jsconfig shortcuts

c - AIX 的 XL 编译器的 -qfuncsect 选项的 gcc 等效选项是什么?

cmake 在检查头文件时使用 corrext c++ 标准

servicestack - 使用 VS2013 和 ServiceStack.Client 包 v.4.0.3 缺少命名空间 ServiceClient (ServiceStack.ServiceClient.Web)