2013-01-13 18 views
6

Ho recentemente eseguito l'aggiornamento da Visual Studio Express 2010 a Visual Studio 2012 Express per Windows Desktop. Sono a conoscenza della precedente mancanza di compatibilità con Windows XP, ma pensavo che ciò fosse risolto dall'aggiornamento 1 (che ho installato).Microsoft Visual Studio 2012 Express per desktop di Windows - Targeting per Windows XP

Tuttavia, sto ancora avendo difficoltà a indirizzare Win XP con le applicazioni C++ che ho compilato utilizzando 2012 Express. Ho impostato il set di strumenti della piattaforma su "Visual Studio 2012 - Windows XP (v110_xp)" ma questo non fa alcuna differenza. Quando provo a eseguire la mia applicazione compilata sul mio sistema Windows XP (eseguo Windows XP tramite VirtualBox), ricevo l'errore che la mia applicazione "non è un'applicazione Win32 valida".

Ho anche provato a impostare il supporto CLR su "Nessun supporto di runtime in linguaggio comune" e la libreria di runtime su "Multithreading (/ MT)".

Anche con un progetto molto semplice vuoto C++ utilizzando il seguente codice, non riesco proprio a farlo funzionare su 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; 
} 

Qualcuno può dirmi dove sto andando male con il mio compilatore/impostazioni del progetto?

P.s Ho installato i pacchetti ridistribuibili MS VC++ 2010 e 2012 sulla mia macchina virtuale XP. Le applicazioni che ho compilato con Visual Studio Express 2010 funzionano correttamente sulla mia macchina virtuale XP.

+0

Controlla la tua piattaforma di destinazione in Build -> Configuration Manager. – shf301

+0

È possibile eseguire programmi compilati con VC 10 toolchain su XP. Questo è essenzialmente lo stesso della compilazione con VS 2010, ma non hai detto che hai bisogno di VC 11 toolchain nella domanda. –

+0

@ shf301 - La piattaforma di destinazione è Win32. – Colin

risposta

0

Il messaggio indica che la tua build non sta producendo un'applicazione a 32 bit - se fosse un'API dipendente dalla versione, ad esempio, vedresti un altro errore che indica che il simbolo non può essere trovato. Poiché hai indicato che stai utilizzando la piattaforma di destinazione corretta nel Configuration Manager, controlla il tuo esploratore di proprietà per assicurarti di non avere argomenti o valori di default in conflitto. Se vedi il link con l'opzione/MACCHINA: X64, allora hai trovato il problema.

Se ciò non funziona, suppongo che potresti provare a eseguire Sysinternals process explorer per vedere quale cl/link viene effettivamente avviato con quali argomenti. Spero possa aiutare.

1

Verifica del progetto proprietà "Proprietà configurazione ->sottosistema>Linker - -> Sistema ".
Se vuoto, riempirlo con (/SUBSYSTEM:CONSOLE) o (/SUBSYSTEM:WINDOWS).

1

Questo funziona:

Configurazione Proprietà -> Linker -> Sistema -> Subsystem = /SUBSYSTEM: WINDOWS

Configurazione Proprietà -> Generale -> Piattaforma Tool Set -> SubsystemVisual Studio 2012 - Windows XP (v110_xp)

Utilizzando Visual Studio 2012 espresso Aggiornamento 3.

1

Usa la catena di strumenti GNU GCC, bro, che è stata ridistribuita con mingw. MSVS attualmente riduce al minimo le dipendenze, ma alcune di esse rimangono ancora in esecuzione. Basta compilare in gcc suports il collegamento statico completo, con piccole dimensioni exe e compatibilità stabile.

Problemi correlati