从 Visual Studio 2015 企业更新 1 面向 Windows XP

Posted

技术标签:

【中文标题】从 Visual Studio 2015 企业更新 1 面向 Windows XP【英文标题】:Targetting Windows xp from visual studio 2015 enterprise update 1 【发布时间】:2016-04-02 00:13:28 【问题描述】:

我想知道我们是否可以使用可以在 Windows xp 上运行的 Visual Studio 2015 构建项目/二进制文件?如果它支持那么我们如何构建?

【问题讨论】:

【参考方案1】:

正如 dxiv 所述,可以使用正确的平台工具集(Visual Studio 2015 - Windows XP (v140_xp))从 Visual Studio 中定位 Windows XP。

这在所有情况下都不够。因为 vs 编译器是通过propper thread local storage (TLS) 处理扩展的,所以需要进行额外的更改。 Windows XP 不正确支持新的 TLS,因此不会初始化 dll 中的静态对象。如果你想避免这个问题,我们可以使用额外的编译器标志/Zc:threadSafeInit- 来禁用这个有问题的功能。

如果您想使用 boost,您必须自己构建它。为了使其与 Windows XP 兼容,必须添加以下选项:

1) 在使用 b2 (bjam) 构建之前运行这些命令

CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
SET "INCLUDE=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Include;%INCLUDE%"
SET "PATH=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Bin;%PATH%"
SET "LIB=%ProgramFiles(x86)%\Microsoft SDKs\Windows\7.1A\Lib;%LIB%"

2) 为 b2 使用这些附加选项

toolset=msvc-14.0 
address-model=32 
define=BOOST_USE_WINAPI_VERSION=0x0501 
define=_USING_V110_SDK71_ 
linkflags=/SUBSYSTEM:CONSOLE,5.01 
cxxflags="/Zc:threadSafeInit- "

注意:

定义是_USING_V110_SDK71_而不是_USING_V140_SDK71_。 cxxflags="/Zc:threadSafeInit- " 中的空格是故意的,因为 b2 中的一个错误会删除尾随的“-”

【讨论】:

【参考方案2】:

Configuring C++ 11 Programs for Windows XP

Visual Studio 中包含的 Windows XP 平台工具集是 Visual Studio 2010 中包含的 Windows 7 SDK 的一个版本,但它使用当前的 C++ 编译器。它还将项目属性配置为适当的默认值,例如,用于下层目标的兼容链接器规范。只有使用 Windows XP 平台工具集创建的 Windows 桌面应用程序才能在 Windows XP 和 Windows Server 2003 上运行,但这些应用程序也可以在更新的操作系统上运行,例如 Windows Vista、Windows 7、Windows Server 2008、Windows 8 ,或 Windows Server 2012。

以 Windows XP 为目标

在解决方案资源管理器中,打开项目的快捷菜单,然后选择“属性”。 在项目的“属性页”对话框中,在“配置属性”的“常规”下,将“平台工具集”属性设置为所需的 Windows XP 工具集。例如,选择 Visual Studio 2012 – Windows XP (v110_xp) 创建与 Microsoft Visual C++ 2012 Redistributable 库二进制兼容的代码。

【讨论】:

我已经要求 Visual Studio 2015。不是 Visual Studio 2012。VS2015 的设置是否也保持不变? 我链接的页面明确标记为Visual Studio 2015 。请完整阅读。 是的。我带着标题去了。感谢您的信息:)

以上是关于从 Visual Studio 2015 企业更新 1 面向 Windows XP的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 2015 如何分析单个单元测试

如何从 Visual Studio 2015 更新 3 中的构建中排除 node_module 文件夹

visual studio2015社区版和企业版的区别

visual studio 2015 怎么更新

VS2015|Visual Studio Enterprise 2015简体中文版(企业版)

安装 Visual Studio 2015 企业版是不是足以使用 C++11/C++14?