2015-12-28 4 views

ответ

3

Configuring C++ 11 Programs for Windows XP

Windows XP Платформа набор инструментов, который включен в Visual Studio представляет собой версию Windows 7 SDK, который был включен в Visual Studio 2010, но он использует текущий C++ компилятор. Он также настраивает свойства проекта на соответствующие значения по умолчанию - например, спецификацию совместимого линкера для таргетинга на нижнем уровне. Только настольные приложения для Windows, созданные с использованием набора инструментов платформы Windows XP, выполняются в 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.
+0

я попросил визуально студии 2015. не для визуальной студии 2012 года является установка остается одинаковой для VS2015 тоже ? –

+0

На странице, с которой я связан, четко помечена «Visual Studio 2015». Пожалуйста, прочитайте его полностью. – dxiv

+1

Да. Я пошел с заголовком. Спасибо за информацию :) –

2

Как упомянуто dxiv Windows XP могут быть направлены от визуальной студии, используя правильный набор инструментов платформы (Visual Studio 2015 - Windows XP (v140_xp)).

Этого не всегда достаточно. Поскольку vs-компилятор был расширен обработкой локального хранилища при помощи командной строки (TLS), требуется дополнительное изменение. Новый TLS неправильно поддерживается Windows XP, поэтому статические объекты в 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, который бы удалить буксировку «-»