win32application與win32 console application區別何在

剛剛在新建project的時候,選擇了 Win32 Application,編譯時出現下面的錯誤:

很奇怪的說,一個很短的程序,不可能出錯的。後來才知道了是因爲Win32 Application和Win32 Console Application選項的問題。搜索到了下面的資料,轉載在這裏:
                                                 
Win32 Application和Win32 Console Application 都是工作在32位Windows環境的程序。其中:

(1)Win32 Application就是普通的常見的窗口應用程序,當然有的界面做得比較個性化,比如圓形的、不規則形狀的…它們都是所謂的GUI(Graphics User Interface圖形用戶接口),我們可以通過鼠標點擊來完成控制。Win32 Application是爲你開發windows應用程序所準備的,程序以WinMain()爲入口,#include<windows.h>,能夠使用win32 API函數。
(2)而Win32 Console Application(win32控制檯應用程序)往往是像MS-DOS窗口(XP中叫命令提示符)的樣子出現,我們得用鍵盤輸入各種命令來使用它,它與純dos程序區別是:它是32位的;或者叫CUI(Character User Interface字符用戶接口)。console程序以main()爲入口,不能使用win32 API函數。

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

Java代碼 複製代碼
  1. Linking... /subsystem:windows   
  2. LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol     WinMain @16  
  3. Debug/TestWin.exe : fatal error LNK1120: 1 unresolved externals   
  4. Error executing link.exe.  
Linking... /subsystem:windows
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol     WinMain @16
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裏鏈接參數不同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章