無法解析的外部符號 _WinMain@16
Ctrl+F7 編譯的時候沒有錯誤,而F6生成解決方案的時候出現如下兩個錯誤:
1:error LNK2019: 無法解析的外部符號 _WinMain@16,該符號在函數 ___tmainCRTStartup 中被引用 MSVCRTD.lib
2: error LNK1120: 1 個無法解析的外部命令
出這個錯誤可能有以下幾個原因:
一、新建項目是控制台應用程序而程序通過的是WinMian(及windows入口函數)
因為新建項目的時候選擇的是控制台應用程序,控制台應用程序的入口是main。而在.CPP文件中提供的是windows入口函數WinMian。
解決辦法:
(1)項目->屬性->配置屬性->C/C++ ->預處理器 中的【預處理器定義】 刪除“_CONSOLE” 添加 “ _WINDOWS”
(2)項目->屬性->配置屬性->連接器->系統中的【子系統】設置為Windows(/SUBSYSTEM:WINDOWS)
(3)生成->重新生成解決方案
二、WinMain的UNICODE版和ANSI版不匹配
為了支持UNICODE,C運行庫對WinMain其實區分了UNICODE版和ANSI版。對UNICODE版的程序,C運行庫調用wWinMain,而對於ANSI版的則調用WinMain。
解決辦法:
(1)將代碼中的 int APIENTRY _tWinMain 替換為 INT WINAPI wWinMain (INT WINAPI wWinMain 替換為 int APIENTRY _tWinMain )
(2)生成->重新生成解決方案