Sto giocando con alcuni OpenGL, utilizzando SDL per gestire la finestra/input ecc. Attualmente sto visualizzando tutte le informazioni che voglio vedere su un HUD. Bene, questo è troppo complicato, e mi chiedevo se c'è un modo semplice per aprire una finestra della console separata per segnalare queste informazioni a me. Sono ancora nuovo al C++, quindi agisci con me se questo è ovvio.C++/SDL Debugging con la finestra della console
risposta
In Linker -> Sistema nelle proprietà del progetto, verificare che il sottosistema sia "Console (/ SUBSYSTEM: CONSOLE)". Ciò fa sì che venga visualizzata una finestra della console separata quando si esegue il programma. Se il tuo attuale punto di ingresso non è main
, allora dovrai cambiarlo se lo fai comunque.
Se si sta eseguendo da una riga di comando e si utilizza printf()
, i messaggi dovrebbero essere registrati nella finestra del terminale. In caso contrario, è possibile accedere a un file e utilizzare tail -f
in caselle di stile * nix per visualizzare l'output così come appare.
Che ambiente stai usando? La maggior parte degli IDE mostrerà questo output anche nelle loro finestre di output di debug.
Come posso creare questa finestra della console? Attualmente sto lavorando con una finestra generata da SDL. – grep
Su quale piattaforma stai lavorando? Se è Windows, esegui cmd.exe ed esegui il programma da lì, su un Mac usa Terminale o su qualsiasi terminale di tua scelta. –
Il seguente codice è per Windows. Trovo sempre a portata di mano per mantenere intorno alla possibilità di creare una finestra di console su richiesta:
int hConHandle;
intptr_t lStdHandle;
CONSOLE_SCREEN_BUFFER_INFO coninfo;
FILE *fp;
// allocate a console for this app
AllocConsole();
// set the screen buffer to be big enough to let us scroll text
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
coninfo.dwSize.Y = 500;
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
// redirect unbuffered STDOUT to the console
lStdHandle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stdout = *fp;
setvbuf(stdout, NULL, _IONBF, 0);
// redirect unbuffered STDIN to the console
lStdHandle = (intptr_t)GetStdHandle(STD_INPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "r");
*stdin = *fp;
setvbuf(stdin, NULL, _IONBF, 0);
// redirect unbuffered STDERR to the console
lStdHandle = (intptr_t)GetStdHandle(STD_ERROR_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
fp = _fdopen(hConHandle, "w");
*stderr = *fp;
setvbuf(stderr, NULL, _IONBF, 0);
// make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog point to console as well
std::ios::sync_with_stdio();
//Keep our window in focus
SetForegroundWindow(m_hWnd); // Slightly Higher Priority
SetFocus(m_hWnd); // Sets Keyboard Focus To The Window
Questo codice presuppone che il HWND
è in una variabile chiamata m_hWnd
; è copiato da un wrapper di classe che uso. Spetta a te, tuttavia, come ottenere HWND
da SDL.
per liberare la console, chiamare questo:
FreeConsole();
AllocConsole
e FreeConsole
sono funzioni API Win32.
- 1. aggiorna la finestra della console con java
- 2. : come lasciare la finestra aperta della console
- 3. Come mantenere aperta la finestra della console
- 4. Nascondi la finestra della console nell'applicazione console C#
- 5. Nascondere la finestra della console dell'applicazione Python con py2exe
- 6. Modifica della console La dimensione della finestra genera ArgumentOutOfRangeException
- 7. Disabilita visualizzazione della finestra della console
- 8. Nascondi la console della console figlio
- 9. Come impedire la chiusura della finestra della console durante l'esecuzione di un'applicazione console?
- 10. nascondi la finestra della console di un programma C
- 11. GCC/C come nascondere la finestra della console?
- 12. Posizione della finestra di Visual Studio Console
- 13. Come posso nascondere una finestra della console?
- 14. Come aprire la finestra della console PowerShell da Powershell
- 15. Impedisci all'applicazione VBscript di mostrare la finestra della console
- 16. Come lasciare la modalità browser R() nella finestra della console?
- 17. La finestra della console appare ancora dopo ProcessWindowStyle.Hidden;
- 18. Pixel C++ nella finestra della console
- 19. Come evitare la finestra della console con il file .pyw contenente la chiamata os.system?
- 20. Console C# - nasconde l'input dalla finestra della console durante la digitazione
- 21. Come eseguire i programmi della console figlio senza mostrare la finestra della console dal programma della GUI Win32?
- 22. Debugging ncurses con Eclipse CDT
- 23. Come cancellare la console della console MySQL in Windows?
- 24. Posso trovare la larghezza della console con Java?
- 25. Come impostare una finestra dell'applicazione della console come la finestra più in alto (C#)?
- 26. debugging node.js con node-inspector
- 27. C++ Come posso nascondere una finestra della console all'avvio?
- 28. Come ottenere l'handle della finestra dell'applicazione di una console
- 29. Java: debugging con SwingUtilities.invokeLater()
- 30. Debugging Node.js con Eclipse
Come si applica questo se, ad esempio, codifico la mia applicazione in un editor di testo e poi creo un eseguibile tramite Cmake? – Speldosa
@Speldosa: è necessario trovare l'opzione CMake che consente di passare i flag del linker e quindi passare "/ SUBSYSTEM: CONSOLE" al linker. –
set_target_properties (youapplication PROPERTIES LINK_FLAGS "/ SUBSYSTEM: CONSOLE") o do: set (CMAKE_EXE_LINKER_FLAGS "/ SUBSYSTEM: CONSOLE") come impostazione globale. –