精華區beta C_and_CPP 關於我們 聯絡資訊
本則 FAQ 由 renderer大大 撰寫。謹此致謝。 ----------------------------------------------------- 請問為什麼會有 _main/WinMain linking error 的錯誤訊息? 情況:編譯無誤,但連結時卻出現如以下的錯誤: VC++: 1. error LNK2001: unresolved external symbol _main 2. error LNK2001: unresolved external symbol _WinMain@16 Dev-C++ 1. [Linker error] undefined reference to `WinMain@16' 成因:製作可執行檔(.EXE)需要所謂的程式進入點(Entry-Point),然而連結器 (Linker)沒有找到預設的程式進入點:main 或 WinMain。 解說:程式進入點是一個特殊的函式(Function),是執行可執行檔時,首先會被 執行的函式 (Global/Static 變數初始化函式可能會更早被執行),一般 C/C++ 的預設的程式進入點為 main 函式,而 Windows 下的視窗程式 (Win32 Application)則以 WinMain 函式為程式進入點。 錯誤排除方式: 1. 如果是一般程式(或說 Console 程式),則加入 main 函式,如果是 Win32 視窗程式,就加入 WinMain 函式。 2. 如果是使用 IDE 環境,請注意建立專案時所選擇的專案類型,Console 程式 請加 main,Win32 程式請加 WinMain,注意是否有搭配錯誤的情形。 3. 用 IDE 開啟別人的程式,打算重新編譯時,請開啟專案檔,而非 .h 或 .cpp 檔。否則按下編譯鍵,有些 IDE 會自行產生一份新的專案檔,其專案 設定不見得正確。如,該程式為 Win32 程式,也有提供 WinMain 函式, 然而 IDE 自行產生的專案設定卻把這份程式當作一般程式,於連結時,就會 產生找不到 _main 函式的情況。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 編輯: khoguan 來自: 220.130.208.168 (11/18 22:44)