Как я компилирую для Windows XP под окнами 7 / Visual Studio 2008

Я запускаю 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 скомпилировал программы или другой параметр компилятора или что-то еще?

6
задан Jon Cage 5 April 2010 в 23:23
поделиться

2 ответа

То, что вы пропустили, скорее всего, заключается в том, что для программ VC ++ требуется установка среды выполнения (если вы не связываете статически, что не является значением по умолчанию) - сообщение об ошибке, которое вы показываете, именно то, что вы получите, если они не в порядке .

Попробуйте установить Microsoft Visual C ++ 2008 SP1 Redistributable Pack на компьютер XP - вы, скорее всего, увидите, что ваша программа работает без каких-либо изменений.

10
ответ дан 8 December 2019 в 14:42
поделиться

Ответ Майкла объясняет, почему это не работает для вас и что вы должны с этим делать. Что касается WINVER - они ничего не меняют в вашем двоичном файле в том смысле, что он внезапно начнет работать на XP. Что они делают, так это отключают объявления функций и типов в файлах заголовков Windows, которые не поддерживаются в версии ОС, указанной в WINVER . Это гарантирует, что вы случайно не позвоните, например, некоторые функции только для Vista. Однако вам не требуется строго - если ваш код не полагается на какие-либо функции только для Vista / 7, вы можете скомпилировать без переопределения WINVER , и он все равно будет работать нормально на XP.

3
ответ дан 8 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: