以visual studio 2015为目标的Windows XP企业更新1

以visual studio 2015为目标的Windows XP企业更新1

问题描述:

我想知道我们是否可以使用可在Windows XP上运行的visual studio 2015构建项目/二进制文件?如果它的支持,那么我们如何构建?以visual studio 2015为目标的Windows XP企业更新1

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

  • 在Solution Explorer中,打开快捷菜单为您的项目,然后选择属性。
  • 在项目的属性页面对话框中,在配置属性,常规下,将平台工具集属性设置为所需的Windows XP工具集。例如,选择Visual Studio 2012 - Windows XP(v110_xp)以创建与Microsoft Visual C++ 2012 Redistributable库二进制兼容的代码。
+0

我要求的Visual Studio 2015年没有为Visual Studio 2012是设定为VS2015保持相同的太? –

+0

我链接的页面显然标记为“Visual Studio 2015”。请完整阅读。 – dxiv

+1

是的。我去了标题。谢谢(你的)信息 :) –

正如dxiv Windows XP中提到的可以从Visual Studio使用正确的工具集平台( - 的Windows XP(v140_xp)的Visual Studio 2015年)为目标。

这不是所有情况都足够。由于vs编译器通过propper线程本地存储(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中的错误,这会删除尾随“ - ”