2012-12-19 6 views
9

Una delle cose che trovo bene su CodeBlocks è che mi consente di creare, compilare ed eseguire rapidamente un file senza creare un progetto. Tuttavia, questo significa che tutti i miei programmi hanno finestre di console, qualcosa che non è normale per la maggior parte delle applicazioni Windows.Come posso specificare il sottosistema nelle opzioni aggiuntive del linker CodeBlocks?

per sbarazzarsi di esso, ho sempre avuto per creare un progetto, gettare il mio file, e passare a dove potevo basta cliccare GUI Applicazione invece di Applicazione console.

Tuttavia, è ovviamente possibile specificare la stessa cosa quando si costruisce utilizzando g ++. Exe e ld.exe e CodeBlocks ha una sezione per opzioni di linker aggiuntive, quindi ho pensato di poterlo inserire lì per evitare il fastidio di sempre creando un progetto, ma a quanto pare ho sbagliato.

In primo luogo, ho trovato this question. Sono rimasto sorpreso quando ho scoperto chi ha risposto, ma questo non mi aiuta, poiché il punto è che posso farlo con lo stesso sforzo senza creando un progetto.

Apparentemente, l'opzione del compilatore -mwindows lo farà, quindi ho provato a inserirla in Settings\Compiler and Debugger\Compiler settings\Other options, e compila e collega bene, ma ha ancora una finestra della console.

Successivamente, ho provato Settings\Compiler and Debugger\Linker settings\Other linker options. Alimentato dai risultati di Google, ho provato ad aggiungere quanto segue, un'opzione attiva alla volta e la ricostruzione. Avere -mwindows attivo non fa differenza per quanto ne so.

-Wl: non riconosciuto riga di comando opzione
--subsystem, finestre: linea di comando non riconosciuto
--subsystem, Windows: Windows - No such file or directory.
--subsystem windows: windows - Nessun file o directory.
--subsystem = windows: opzione riga di comando non codificata
--subsystem, console: console - Nessun file o directory.

Questo test è stato tutto fatto sulla nuova release di CodeBlocks, CodeBlocks 12.11, e GCC 4.7.2, ottenuto da this MinGW distro (versione 9.4). Tuttavia, sono abbastanza sicuro che funzioni allo stesso modo con CodeBlocks 10.05.

Sono obbligato a utilizzare un progetto, utilizzare un makefile o costruirlo dalla riga di comando oppure è possibile modificare questa impostazione direttamente nelle impostazioni globali IDE CodeBlocks?

+0

* "ma ha ancora una finestra della console" *. Si è presentata la finestra della GUI? –

+0

@MarkGarcia, quello che sto testando in realtà non ha una finestra GUI. Comunque, ho messo i programmi senza interfaccia grafica in un progetto e l'ho fatto in quel modo, il che ha funzionato bene: all'avvio del programma, l'utente non avrebbe notato nulla. Prima che i servizi siano menzionati, ha bisogno di interagire. In realtà sarà avviato da un servizio. Normalmente, aderirei alle pratiche comuni, ma questa non è esattamente una normale applicazione - è intesa come uno scherzo. La tecnica spiegata in una risposta, tuttavia, può applicarsi altrettanto bene ai programmi * con * una GUI :) – chris

+0

@MarkGarcia, Scusa, mi rendo conto di non aver risposto alla tua domanda in tutto ciò.Ne ho trovato uno con una finestra e ho provato a compilarlo ed eseguirlo con '-mwindows'. Si presentano sia la console che la finestra. – chris

risposta

6

Passare a -Wl,--subsystem,windows al linker è il modo corretto per farlo. Se sembra non funzionare, assicurati di non aver inserito uno spazio da qualche parte; usa l'argomento così com'è.

+0

Ho dovuto fare questo: '-Wl, -subsystem: windows' –

Problemi correlati