MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16


1.問題描述
做開源項目時,碰到VS2010報錯如下:
MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用 
Debug\jk.exe : fatal error LNK1120: 1 個無法解析的外部命令;
開始以為是漢化的問題,因為這個錯誤指向的是找不到WinMain函數,所以用了英文版的試了下,依舊報錯:
error LNK2001: unresolved external symbol _WinMain@16 debug/main.exe:fatal error LNK 1120:1 unresolved externals 
error executing link.exe;
2.原因分析
產生這個問題的真正原因是c++語言運行時找不到適當的程序入口函數,一般情況下,如果是windows程序,那么WinMain是入口函數,在VS2010中新建項目為“win32項目”如果是dos控制台程序,那么main是入口函數,在VS2010中新建項目為“win32控制台應用程序”。而如果入口函數指定不當,很顯然c++語言運行時找不到配合函數,它就會報告錯誤。
3.解決辦法
3.1 如果我們需要的是windows程序
Step1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
Step2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然后在右邊欄的Preprocessor Definitions對應的項中刪除_CONSOLE, 添加_WINDOWS.

Step3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然后在右邊欄的SubSystem對應的項改為Windows(/SUBSYSTEM:WINDOWS)

3.2 如果我們需要的是控制台程序
Step1.菜單中選擇 Project->Properties, 彈出Property Pages窗口
Step2.在左邊欄中依次選擇:Configuration Properties->C/C++->Preprocessor,然后在右邊欄的Preprocessor Definitions對應的項中刪除_WINDOWS, 添加_CONSOLE.
Step3.在左邊欄中依次選擇:Configuration Properties->Linker->System,然后在右邊欄的SubSystem對應的項改為CONSOLE(/SUBSYSTEM:CONSOLE)
————————————————
版權聲明:本文為CSDN博主「沈子恆」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shenziheng1/article/details/53188168


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM