因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯
器的鏈結開關選項(也就是linker選項).
首先我們來看一下linker的 /subsystem 選項
這個鏈結選項告訴作業系統如何執行可執行檔案
console:
win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個類似dos
視窗的控制台視窗,如果在應用程式的主函式為main()或者wmain(),在預設情況下
該應用程式就是乙個控制台應用程式
native;
裝置驅動器選項,如果/driver:wdm選項被設定的話,該鏈結選項(native)就為預設選項
posix:
在windows nt 種執行在posix子系統上的應用程式
windowsce:
執行在windows ce上的應用程式
major and minor (optional):
主版本號和次版本號,該選項為可選,該選項為0~65535之間的十進位制整數
接下來我們再看看應用程式是如何執行的!
我們知道用vc編寫的程式,執行的時候是需要 c/c++執行庫支援的.當我們執行乙個c/c++程式的時候
鏈結器會首先尋找應用程式的啟動函式,例如:
如果你建立了乙個console程式的話,編譯器得鏈結開關會是以下這種形式
/subsystem:"console" /entry:"maincrtstartup" (ansi)
/subsystem:"console" /entry:"wmaincrtstartuup" (unicode)
上面的兩種形式可以再project->setting->link->project option中看到
上面的subsystem和entry並不需要都設定,如果你只設定了/subsystem:"console"
的話,那麼預設的entry開關在預設情況下應為/entry:"maincrtstartup"
反之,如果你在應用程式中定義了main函式的話,預設情況下,你的/subsystem開關
應該為/system:"console"
在預設情況下/subsystem 和/entry開關是匹配的,也就是
console對應maincrtstartup或者wmaincrtstartup
windows對應winmain或者wwinmain
但是我們也可以通過手動改動的方式使他們不匹配
例如我們可以這樣改動
#pragma comment( linker, "/subsystem:/"windows/" /entry:/"maincrtstartup/"" ) // 設定入口位址
int main(int argc, char* ar**)
在預設情況下鏈結器看到/subsystem下是windows選項的時候,它會自動尋找winmain或者wwinmain
但我們強制指定入口位址,這樣執行程式的時候預設的console視窗就會隱藏!
上面是在**中使用#pragma指令來設定,還有一種就是直接在開發環境的
project->setting->link->project option中手工改動!
寫了這麼多,自己都有點感覺亂,沒有辦法,以前沒寫過什麼文章,所以措辭可能不太好,希望大家見諒
在控制台程式中隱藏控制台視窗
因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯 器的鏈結開關選項 也就是linker選項 首先我們來看一下linker的 subsystem 選項 這個鏈結選項告訴作業系統如何執行可執行檔案 console win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個...
在控制台程式中隱藏控制台視窗
因為此種方法是通過設定編譯器的鏈結開關來實現,所以讓我們來看一下編譯 器的鏈結開關選項 也就是linker選項 首先我們來看一下linker的 subsystem 選項 這個鏈結選項告訴作業系統如何執行可執行檔案 console win32 字元模式應用程式,此種型別的應用程式在執行的時候會產生乙個...
C 中呼叫控制台程式時隱藏控制台視窗
有時我們在呼叫控制台程式時,不希望看到控制台視窗,在c 中可以通過以下方法實現 processstartinfo startinfo new processstartinfo e helloworld.exe startinfo.createnowindow true 不建立視窗 startinfo...