2011-09-06 14 views

risposta

8

/SUBSYSTEM:CONSOLE) è per applicazioni basate su console. È necessario definire la funzione main nel codice.

/SUBSYSTEM:WINDOWS) è per applicazioni GUI. È necessario definire la funzione WinMain.

+7

SUBSYSTEM: WINDOWS non è necessariamente per le applicazioni GUI. Solo per le app senza console. Pensa alle app del server, ai servizi che funzionano senza headless. –

+2

Se il targeting di Windows XP dalla riga di comando di MSVC 2013, potrebbe essere necessario /SUBSYSTEM:WINDOWS,5.1 (o: CONSOLE, 5.1) –

2

/SUBSYSTEM: risultati console in un processo con una console e/SUBSYSTEM: WINDOWS fa non.

6

CONSOLE: viene visualizzata la finestra della console. WINDOWS: il programma si avvia senza la finestra della console.

Modificato, guardando un'altra risposta. Si noti che il flag/SUBSYSTEM non ha alcun effetto sul punto di ingresso del programma. Il punto di ingresso del programma è definito dall'opzione/ENTRY linker. In genere/SUBSYSTEM: CONSOLE ha un punto di ingresso "principale" e/SUBSYSTEM: WINDOWS ha un punto di ingresso "WinMain". Ma è possibile, ad esempio, creare un'applicazione GUI con il punto di ingresso WinMain e la finestra della console.

3

Vedere here. VS2008 automatizza alcune cose per te che hanno portato alla confusione.

CONSOLE Applicazione in modalità di carattere Win32. Il sistema operativo fornisce una console per le applicazioni della console. Se main o wmain è definito per codice nativo, int main (array ^) è definito per il codice gestito oppure l'applicazione viene compilata completamente utilizzando /clr: safe, CONSOLE è l'impostazione predefinita.

WINDOWS L'applicazione non richiede una console, probabilmente perché crea le proprie finestre per l'interazione con l'utente. Se WinMain o wWinMain è definito per il codice nativo, o WinMain (HISTANCE *, HINSTANCE *, char *, int) o wWinMain (HINSTANCE *, HINSTANCE *, wchar_t *, int) è definito per il codice gestito, WINDOWS è il valore predefinito.

Problemi correlati