По умолчанию Visual Studio 2012 не поддерживает Windows XP и Windows Server 2003. И до обновления 1 эти операционные системы вообще не поддерживались. Теперь с обновлением 1 я могу использовать Visual Studio 2012 для создания приложений для Windows XP и Windows Server 2003, выбрав Набор инструментов vs110_xp. Отлично.
Интересно, что будет, если я забуду это сделать? Что значит «не поддерживает»? Исполняемые файлы просто не беги: «… не является приложением Win32.»
Но что произойдет, когда я использую такие библиотеки DLL на XP? Я не могу найти какую-либо информацию об этом. И, к сожалению, в настоящее время я не могу попробовать это. Кто-нибудь нашел конкретные проблемы?
Программа просто не сможет запуститься и сразу завершится сбоем. Наиболее важным изменением в VS2012 является то, что теперь он указывает версию 6.0 Windows в Опция компоновщика / SUBSYSTEM. Windows XP заметит это, это версия 5.02, которая поднимает руки и не может выполнить запрос на запуск EXE или загрузку DLL с помощью ERROR_BAD_EXE_FORMAT.
Довольно важное изменение, между прочим, компокат приложения предполагает, что Windows включает исполняемые файлы, которые говорят, что они были созданы для работы на старых версиях Windows, довольно хлопотно. С ложью Аэро трудно иметь дело, если тебе не все равно. CRT также сильно изменился, использовав множество функций winapi, которые доступны только в версии 6.0 и выше. Редакция Update1 хромает, когда обнаруживает, что они отсутствуют.
Других решений пока нет …