Подтвердить что ты не робот

Как скомпилировать для Win XP с Visual Studio 2012?

Хорошо, поэтому я использую Visual Studio 2012 в Windows 7 x64 для программирования и компиляции. Мое приложение прекрасно работает, но когда я пытаюсь выполнить его с виртуальной машины Windows XP с пакетом обновления 3 (SP3), я сразу же получаю "xxxx.exe недействительное приложение win32".

Приложение скомпилируется со статической ссылкой, то есть с /MT. Я установил _WIN32_WINNT в 0x0501 в targetver.exe; менеджер конфигурации настроен на Win32, а целевая машина в дополнительных параметрах Linker установлена ​​на MACHINEX86.

My targetver.h выглядит так:

#include <winsdkver.h>

#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
#define NTDDI_VERSION 0x0501

#include <SDKDDKVer.h>

Я также попытался скомпилировать с /MD и установить .NET Framework, что тоже не помогло.

Я не знаю, и я действительно мог бы использовать некоторую помощь, поскольку мне нужно, чтобы она работала для Windows XP. Спасибо заранее.

4b9b3361

Ответ 1

Отказываясь от комментария, и обратите внимание, что этот ответ применим только к VС++ 2012:

VС++ 2012 RTM поддерживает не WinXP - эта поддержка появится позднее в этом году в обновлении VS2012.

В то же время вы можете установить CTP таргетинга WinXP с VС++ 2012, но вам нужно будет связать ЭЛТ статически для развертывания. См. эту статью в блоге для получения дополнительной информации.


EDIT: Обновлено обновление Visual Studio 2012 1 и добавлена ​​официальная поддержка для запуска приложений, созданных с помощью VС++ 2012 в Windows XP, а также возможность динамического связывания CRT.

Ответ 2

Должны быть сделаны две вещи:

  • Свойства конфигурации > Общая страница, измените набор инструментов платформы на: Visual Studio 2012 - Windows XP (v110_xp);

  • Компоновщик > Система. Изменить подсистему на: Консоль /Windows.

Подробное объяснение здесь: http://software.intel.com/en-us/articles/linking-applications-using-visual-studio-2012-to-run-on-windows-xp

Ответ 3

Возможно, опоздать с решением, или это может быть не ожидаемое решение, но когда вы создаете файл .exe, версия для 32-разрядной версии будет находиться в папке с папкой проекта\x86\Release