很奇怪的說,一個很短的程序,不可能出錯的。後來才知道了是因爲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初學者可能會常遇到如下鏈接錯誤:
- 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裏鏈接參數不同