C++隱藏控制檯視窗
阿新 • • 發佈:2019-02-03
最近遇到了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視窗就會隱藏