天天看點

【轉】win32 application 和win32 console application 的差別

Win32      application      是基于WINDOWS平台的32位開發環境開發應用程式,SDK程式。

Win32      Console      application      是基于DOS開發平台開發應用程式,不能使用與圖形有關的函數,控制台程式。

1.EXE檔案本身有差別:在檔案頭裡(PE頭)有一個标記表明該檔案是Application還是Console

2.OS在建立對應的程序時,如果是Console,除了載入檔案映像并開啟程序外(這一點和Application相同),同時建立一個Console對象(就是那個黑黑的視窗)與之關聯,而且這種關聯是可以程式設計脫開的.

除此以外,就沒什麼差別了,在Console程式裡調用相應的API也可以建立視窗,對話框什麼的

///

Win32 Application和Win32 Console Application 

都是工作在32位Windows環境的程式。 

其中Win32 Application 

就是普通的常見的視窗應用程式,當然有的界面做得比較個性化,比如圓形的、不規則形狀的…… 

它們都是所謂的GUI(Graphics User Interface圖形使用者接口),我們可以通過滑鼠點選來完成控制。 

而 

Win32 Console Application(win32控制台應用程式) 

往往是像MS-DOS視窗(XP中叫指令提示符)的樣子出現,我們得用鍵盤輸入各種指令來使用它; 

或者叫CUI(Character User Interface字元使用者接口)。 

vc6裡Win32 Application和Win32 console Application的差別 

很多VC初學者可能會常遇到如下連結錯誤: 

Linking... /subsystem:windows 

LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol [email protected] 

Debug/TestWin.exe : fatal error LNK1120: 1 unresolved externals 

Error executing link.exe. 

解決方法是:将project-settings-link的project options裡的 

/subsystem:windows 

改成 

/subsystem:console 

原因:Win32 Application的入口函數為WinMain 

Win32 Console Application的入口函數是main 

換句話說,如果你編寫傳統的C程式,必須建立Win32 Console程式,但VC裡面預設的是Win32 Application,于是上面提及的連結錯誤就就經常出現了 

而Win32 Application和Win32 Console的差別就在于VC裡連結參數不同

有人問如何才能使Console    Application運作完全後自動關閉其視窗。

MS-Dos視窗隻有在Debug時才會出現,編譯之後,直接運作編譯檔案,關閉檔案時視窗會自動關閉。

你完全可以在console程式裡面向對象,當然你在win32   application裡也可以面向過程,不過

當你使用MFC作為基礎的話,面向過程可就捉襟見肘了。

繼續閱讀