C++中無法解析的外部符號 _WinMain@16
阿新 • • 發佈:2019-02-18
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)專案->屬性->配置屬性->聯結器->系統中的【子系統】設定為 控制檯 (/SUBSYSTEM:CONSOLE)
或DEBUG選擇x64
(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)生成->重新生成解決方案