2013-01-13 13 views
6

Niedawno zaktualizowałem program Visual Studio Express 2010 do Visual Studio 2012 Express na pulpit systemu Windows. Jestem świadomy wcześniejszego braku zgodności z systemem Windows XP, ale myślałem, że zostało to rozwiązane przez Update 1 (którą zainstalowałem).MS Visual Studio 2012 Express na pulpit Windows - Kierowanie na system Windows XP

Jednak nadal mam trudności z kierowaniem na Win XP z aplikacjami C++, które skompilowałem używając 2012 Express. Ustawiłem zestaw narzędzi platformy na "Visual Studio 2012 - Windows XP (v110_xp)", ale to nie ma znaczenia. Kiedy próbuję uruchomić moją skompilowaną aplikację na moim systemie Windows XP (uruchamiam Windows XP przez VirtualBox), pojawia się błąd, że moja aplikacja "nie jest prawidłową aplikacją Win32."

Próbowałem także ustawić obsługę CLR na "Brak obsługi języka wspólnego" i Bibliotekę środowiska wykonawczego na "Wielowątkowe (/ MT)".

Nawet przy bardzo podstawowym puste projektu C++ przy użyciu następującego kodu, po prostu nie mogę zmusić go do pracy na XP:

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

#include <iostream> 

int main() 
{ 
    std::cout << "TEST" << std::endl; 

    std::cout << std::endl << std::endl << "Press ENTER to close this window."; 
    std::cin.get(); 
    return 0; 
} 

Czy ktoś może mi powiedzieć, gdzie mam zamiar tak z moim kompilatora/ustawienia projektu?

P.s. Zainstalowałem pakiety redystrybucyjne MS VC++ 2010 i 2012 na mojej wirtualnej maszynie XP. Aplikacje skompilowane przy użyciu Visual Studio Express 2010 działają dobrze na mojej wirtualnej maszynie XP.

+0

Sprawdź swoją platformę docelową w Build -> Configuration Manager. – shf301

+0

Z pewnością możesz uruchamiać programy skompilowane z VC 10 toolchain na XP. Jest to w zasadzie takie samo, jak kompilacja z VS 2010, ale nie stwierdzono, że potrzebujesz zestawu narzędzi VC 11 w pytaniu. –

+0

@ shf301 - Platformą docelową jest Win32. – Colin

Odpowiedz

0

Komunikat wskazuje, że twoja kompilacja nie tworzy aplikacji 32-bitowej - jeśli na przykład był to interfejs API zależny od wersji, zobaczysz inny błąd wskazujący, że symbolu nie można znaleźć. Ponieważ wskazałeś, że używasz poprawnej platformy docelowej w menedżerze konfiguracji, sprawdź eksplorator właściwości, aby upewnić się, że nie masz sprzecznych argumentów lub wartości domyślnych. Jeśli widzisz link z opcją/MACHINE: X64, to znalazłeś problem.

Jeśli to nie działa, przypuszczam, że możesz spróbować uruchomić Eksplorator procesów Sysinternals, aby zobaczyć, który cl/link jest aktualnie uruchamiany za pomocą jakich argumentów. Nadzieja, która pomaga.

1

Sprawdź swój projekt za "Właściwości konfiguracyjne ->Linker ->systemu ->Podsystem" właściwości.
Jeśli puste, wypełnij go (/SUBSYSTEM:CONSOLE) lub (/SUBSYSTEM:WINDOWS).

1

to działa:

Configuration Properties -> Linker -> System -> Podsystem = /podsystem: WINDOWS

Konfiguracja Właściwości -> Ogólne -> Platforma zestaw narzędzi -> SubsystemVisual Studio 2012 - Windows XP (v110_xp)

Korzystanie z Visual Studio 2012 ekspresowe Aktualizacja 3.

1

Użyj łańcucha narzędzi GNU GCC, bracie, który redistrebuted with mingw. MSVS faktycznie minimalizuje zależności, ale niektóre z nich nadal pozostają w exe. Po prostu kompilacja w gcc obsługuje pełne łączenie statyczne, z małym rozmiarem exe i stabilną kompatybilnością.

Powiązane problemy