Visual c++ 针对visual studio 2015企业版1中的Windows xp

Visual c++ 针对visual studio 2015企业版1中的Windows xp,visual-c++,visual-studio-2015,windows-xp,Visual C++,Visual Studio 2015,Windows Xp,我想知道我们是否可以使用可以在Windows xp上运行的visual studio 2015构建项目/二进制文件?如果它得到支持,那么我们如何构建 VisualStudio中包含的Windows XP平台工具集是Visual Studio 2010中包含的Windows 7 SDK的一个版本,但它使用当前的C++编译器。它还将项目属性配置为适当的默认值,例如,用于下层目标的兼容链接器的规范。只有使用Windows XP平台工具集创建的Windows桌面应用程序才能在Windows XP和W

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

VisualStudio中包含的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工具集。例如,选择VisualStudio 2012——WindowsXP(V1xXP)来创建与微软Visual C++ 2012可重分发库兼容的二进制代码。

如dxiv所述,可以使用正确的平台工具集(visual studio 2015-Windows XP(v140_XP))从visual studio瞄准Windows XP

这并非在所有情况下都足够。由于vs编译器是由propper线程本地存储(TLS)处理扩展的,因此需要进行额外的更改。Windows XP不正确支持新TLS,因此dll中的静态对象将不会初始化。如果要避免此问题,请使用附加的编译器标志
/Zc:threadSafeInit-
来禁用此有问题的功能

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

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

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- "
注:

  • 定义是_使用_V110 _SDK71 u而不是_使用_V140 _SDK71 u
  • cxflags=“/Zc:threadSafeInit-”
    中的空格是b2中的一个bug,它会删除尾随的“-”

我已经申请了visual studio 2015。不适用于visual studio 2012。VS2015的设置是否也保持不变?我链接的页面已清楚地标记为
Visual Studio 2015
。请仔细阅读。我用头球。谢谢你提供的信息:)
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- "