轉自:http://blog.sina.com.cn/s/blog_51c1ed050100zhrc.html
一,問題描述
MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用
Debug\jk.exe : fatal error LNK1120: 1 個無法解析的外部命令
error LNK2001: unresolved external symbol _WinMain@16
debug/main.exe:fatal error LNK 1120:1 unresolved externals
error executing link.exe;
二,原因及解決辦法
產生這個問題的真正原因是c語言運行時找不到適當的程序入口函數,
一般情況下,如果是windows程序,那么WinMain是入口函數,在VS2010中新建項目為“win32項目”
如果是dos控制台程序,那么main是入口函數,在VS2010中新建項目為“win32控制台應用程序”
而如果入口函數指定不當,很顯然c語言運行時找不到配合函數,它就會報告錯誤。
修改設置適應你的需求
PS:win32項目於console(控制台)項目,這二者的區別可類比於windows系統與linux(dos)系統,前者是通過圖形用戶界面達到將信息傳達到系統,即用戶去點擊圖標,然后與窗口進行交互到達所要的結果或者操作(比如要打開一個文件夾等),而dos是通過命令,即cmd與系統進行交互,告訴系統我們要做什么,然后到達我們所要的結果。
如果你需要的是windows程序:
1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然后在右邊欄的Preprocessor Definitions對應的項中刪除_CONSOLE, 添加_WINDOWS.
3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然后在右邊欄的SubSystem對應的項改為Windows(/SUBSYSTEM:WINDOWS)
如果你需要的是控制台程序:
1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然后在右邊欄的Preprocessor Definitions對應的項中刪除_WINDOWS, 添加_CONSOLE.
3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然后在右邊欄的SubSystem對應的項改為CONSOLE(/SUBSYSTEM:CONSOLE)