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作為基礎的話,面向過程可就捉襟見肘了。