Флаг компилятора Visual C ++ для Visual Studio 2013 для Targeting XP

Я хочу создать программу на C ++ с Visual Studio 2013, предназначенную для среды XP, мне известна опция пользовательского интерфейса в свойствах проекта -> вкладка «Конфигурация», чтобы установить инструмент «Платформа» в верхней части Windows v120_xp, я хочу добиться этого с помощью команды варианты строки. Как это сделать.

Для визуальной студии 2012 года я знаю вариант

установить CL = / D_USING_V110_SDK71 _;% CL%

Я ищу аналогичный вариант Visual Studio 2013. Не могли бы вы помочь?

3

Решение

Макрос _USING_V110_SDK71_ не имеет ничего общего с созданием вашей программы для совместимости с XP, это всего лишь побочный эффект. Существенным вариантом является линкер вариант, / SUBSYSTEM. Обратите внимание, как этот параметр позволяет указать основной и вспомогательный номер версии подсистемы. Ваша программа может работать только на XP, если вы установите эту опцию на 5,1. Начиная с VS2012, по умолчанию установлено значение 6,0, которое является номером версии текущего поколения Windows. Vista или выше требуется для запуска такой программы.

На самом деле это довольно большая проблема, снижение номера версии включает некоторые приложения-компаты в Windows, которые были разработаны для работы с программой, которая объявляет, что ничего не знает о современной версии Windows. В частности, Aero относится к метрикам окна, разработанным для того, чтобы древняя программа все еще работала с толстыми оконными границами.

На ЭЛТ также влияют довольно неясные детали, связанные с многопоточностью и локализацией. Тестирование обязательно требуется. Помните о стоимости поддержки такой древней операционной системы.

И последнее, но не менее важное: вам также необходимо использовать соответствующую версию SDK. Последний, который все еще совместим с XP, v7.1. Если вы строите из командной строки, вы получите 8.1, вам нужно исправить это, предварительно установив переменную среды% WindowsSdkDir%. И вам нужно установить целевую версию Windows в ваших заголовках, которые #include Windows.h, мы надеемся, это предварительно скомпилированный заголовок. Определите _WIN32_WINNT для 0x501, чтобы соответствовать XP и избегать случайного использования функций winapi, которые недоступны в XP.

6

Другие решения