1. 程式人生 > >C++隱藏控制檯視窗

C++隱藏控制檯視窗

最近遇到了C++控制檯視窗需要隱藏的問題,記錄下結局辦法,供以後參考。

#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) 

在程式中加上如上語句,可以隱藏控制檯視窗。

用VC編寫的程式,執行的時候需要C/C++執行庫的支援。

當我們執行一個程式時,聯結器會首先尋找應用程式的啟動函式。

以下內容為引用,因小A水平有限,不懂編譯器連線開關,未能證實。但結果有效,內容應該是合理的。

引用:

如果你建立了一個console程式的話,編譯器得連結開關會是以下這種形式 
/subsystem: "console " /entry: "mainCRTStartup " (ANSI) 


/subsystem: "console " /entry: "wmainCRTStartuup " (UNICODE) 

如果你建立了一個win32 application,編譯器得連結開關則會是一下形式 
/subsystem: "windows " /entry: "WinMain " (ANSI) 
/sbusystem: "windows " /entry: "wWinMain " (UINCODE) 

在預設情況下/subsystem 和/entry開關是匹配的,也就是 
console對應mainCRTStartup或者wmainCRTStartup 
windows對應WinMain或者wWinMain 



但是我們也可以通過手動改動的方式使他們不匹配 ,例如我們可以這樣改動 
#pragma comment( linker, "/subsystem:\ "windows\ "  /entry:\ "mainCRTStartup\ " " ) // 設定入口地址 

在預設情況下連結器看到/subsystem下是windows選項的時候,它會自動尋找WinMain或者wWinMain 
但我們強制指定入口地址,這樣執行程式的時候預設的console視窗就會隱藏