Я запускаю Windows 7 и Visual Studio 2008 Pro и пытаюсь получить свое рвение на Windows XP SP3.
Это - действительно минимальная программа командной строки, так должен иметь любые смешные зависимости:
// XPBuild.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
printf("Hello world");
getchar();
return 0;
}
Я считал где-нибудь, что определение нескольких констант, таких как WINVER должно позволить мне компилировать для других платформ. Я попробовал добавленное следующее к моему /D
параметры компилятора:
;WINVER=0x0501;_WIN32_WINNT 0x0501;NTDDI_VERSION=NTDDI_WINXP
Но это не имело никакого значения. Когда я выполняю его на своей машине Windows XP (на самом деле работающий в virtualbox), я получаю следующую ошибку:
Этому приложению не удалось запуститься, потому что конфигурация приложения является неправильной. Переустановка приложения может решить эту проблему.
Таким образом, что я пропустил? Там что-то еще требуется работать, MSVC скомпилировал программы или другой параметр компилятора или что-то еще?
То, что вы пропустили, скорее всего, заключается в том, что для программ VC ++ требуется установка среды выполнения (если вы не связываете статически, что не является значением по умолчанию) - сообщение об ошибке, которое вы показываете, именно то, что вы получите, если они не в порядке .
Попробуйте установить Microsoft Visual C ++ 2008 SP1 Redistributable Pack на компьютер XP - вы, скорее всего, увидите, что ваша программа работает без каких-либо изменений.
Ответ Майкла объясняет, почему это не работает для вас и что вы должны с этим делать. Что касается WINVER
- они ничего не меняют в вашем двоичном файле в том смысле, что он внезапно начнет работать на XP. Что они делают, так это отключают объявления функций и типов в файлах заголовков Windows, которые не поддерживаются в версии ОС, указанной в WINVER
. Это гарантирует, что вы случайно не позвоните, например, некоторые функции только для Vista. Однако вам не требуется строго - если ваш код не полагается на какие-либо функции только для Vista / 7, вы можете скомпилировать без переопределения WINVER
, и он все равно будет работать нормально на XP.