Я хотел бы знать, можем ли мы строить проекты/двоичные файлы с помощью visual studio 2015, которые могут работать на Windows XP? Если он поддерживается, то как мы можем построить?Целевая установка Windows XP из Visual Studio 2015 Enterprise update 1
ответ
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.
Как упомянуто 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, который бы удалить буксировку «-»
я попросил визуально студии 2015. не для визуальной студии 2012 года является установка остается одинаковой для VS2015 тоже ? –
На странице, с которой я связан, четко помечена «Visual Studio 2015». Пожалуйста, прочитайте его полностью. – dxiv
Да. Я пошел с заголовком. Спасибо за информацию :) –