無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用


一,問題描述
MSVCRTD.lib(crtexew.obj) : error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用 
Debug\jk.exe : fatal error LNK1120: 1 個無法解析的外部命令

error LNK2001: unresolved external symbol _WinMain@16
在自己創建新工程的時候經常在開始選擇win32控制台程序還是win32程序的時候一不小心弄錯了,后面是相應的解決方法。

 

二,原因及解決辦法
產生這個問題的真正原因是C語言運行時找不到適當的程序入口函數,

一般情況下,如果是windows程序,那么WinMain是入口函數,在VS2008中新建項目為“win32項目”

1、如果是dos控制台程序,那么main是入口函數,在VS2008中新建項目為“win32控制台應用程序”

2、如果入口函數指定不當,很顯然c語言運行時找不到配合函數,它就會報告錯誤。

修改設置適應你的需求:

 

如果是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)。

即:項目——> 項目屬性——> 配置屬性——> 鏈接器——> 系統——> 子系統,這里選擇控制台(SUBSYSTEM:CONSOLE)  則表示此項目是WIN32控制台程序。而選擇Windows (/SUBSYSTEM:WINDOWS) 則表示為 WIN32項目。


免責聲明!

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



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