1. 程式人生 > >C++中無法解析的外部符號 _WinMain@16

C++中無法解析的外部符號 _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)專案->屬性->配置屬性->聯結器->系統中的【子系統】設定為  控制檯 (/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)生成->重新生成解決方案