2015-12-28 138 views

回答

3

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

是的。我去了標題。謝謝(你的)信息 :) –

2

正如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中的錯誤,這會刪除尾隨「 - 」
相關問題