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

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

【问题讨论】:

    标签: visual-c++ visual-studio-2015 windows-xp


    【解决方案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 。请完整阅读。
      • 是的。我带着标题去了。感谢您的信息:)
      猜你喜欢
      • 1970-01-01
      • 2013-05-06
      • 2015-10-18
      • 2016-02-29
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      相关资源
      最近更新 更多