Domanda

Per una qualche ragione, std :: cout non visualizza nulla con la mia domanda. La descrizione del mio ambiente di sviluppo segue.

Sto lavorando su un'applicazione Qt usando Qt Creator. Dal momento che Qt Creator non può essere lanciato da mia stazione (XP64), attualmente sto sviluppando con Visual Studio 2008 e il plugin Qt (importando il file di progetto .pro). Tutto sembra fini e l'applicazione funziona.

In alcuni casi (a seconda argomenti della riga di comando), io non voglio lanciare il lui, solo per visualizzare alcune frasi del CLI (riga di comando richiesto argomenti, per esempio).

Non c'è niente di errore, ma non viene visualizzato nulla. Il codice corrispondente, e sono sicuro che è a conduzione è il (classico) seguente:

std::cout << "is this going to be displayed ?" << std::endl;

Avete qualche idea del perché non viene visualizzato nulla?

È stato utile?

Soluzione 2

Ok, risposta trovato. Risposta semplice, naturalmente, come sempre quando incontrano tali problemi. Michael Aaron era sui binari giusti.

Semplicemente cambiando sottosistema di console in configurazione di progetto (/ proprietà Configuration / Linker / System) rende l'intero lavoro cosa. La GUI funziona ancora, ma con una console di sfondo. Posso fare con questo.

Altri suggerimenti

In Windows, programmi di solito sono costruiti sia come SUBSYSTEM: applicazione Windows o come SUBSYSTEM:. CONSOLE

Programmi costruita con SUBSYSTEM: CONSOLE dovrebbero essere le applicazioni in modalità testo. Per questo tipo di applicazione, stdout e stderr stampa alla console che li avete lanciato da, la creazione di una nuova console, se necessario.

Al contrario, SUBSYSTEM: applicazioni Windows Non perdete tempo con una console. È ancora possibile scrivere a stdout e stderr, ma che normalmente non andare da nessuna parte. Si potrebbe utilizzare AllocConsole per creare una console per la stampa a, ma questo sarà sempre stampare su una finestra della console di nuova creazione, non una finestra di console è stato avviato il programma dal.

Un trucco per SOTTOSISTEMA: le applicazioni di Windows è che anche se non c'è nessuna console, si può ancora tubo stdout e stderr. Per stdout tubo, si può fare:

YourApplication.exe > output.txt

o se hai cat (o equivalente):

YourApplication.exe | cat

Si noti inoltre che non c'è in realtà alcuna differenza tra SOTTOSISTEMA: applicazioni Windows e SOTTOSISTEMA: applicazioni console diverse da come Windows tratta li quando si crea il processo. (È possibile creare finestre in SOTTOSISTEMA: applicazioni di console.) Si può quindi facilmente passare da un tipo SOTTOSISTEMA (ad esempio, per l'uso SUBSYSTEM: CONSOLE per build di debug e SUBSYSTEM:. WINDOWS per quelli di rilascio)

Prova

CONFIG + = console

nel file .pro.

distingue finestre tra applicazioni console e applicazioni GUI, e non crea una console per le applicazioni GUI, per impostazione predefinita ( consultare questa pagina da MSDN ). È possibile utilizzare AllocConsole per creare uno.

Forse non è la linea std :: cout che lo rende non visualizzato, ma la funzione che lo contiene. Forse non è invocato a tutti, e questo è il motivo per cui std :: cout non funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top