首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

VC6.0 連結錯誤 LNK2001: unresolved external symbol _main 根因與一鍵修復

     編輯:關於C語言

一、 錯誤訊息

LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/Project.exe : fatal error LNK1120: 1 unresolved externals

二、 根因:子系統設定不匹配

  • 專案類型為 **Windows 應用程式 (GUI)**,入口點為 WinMain (或 wWinMain)。
  • 連結器子系統設為 **Console (/SUBSYSTEM:CONSOLE)**,預期入口點為 main (或 wmain)。
  • 找不到 _main 符號 → LNK2001。

三、 一鍵修復步驟 (VC6.0 IDE)

  1. 開啟 **Project → Settings...** (或 Alt+F7)。
  2. 選擇 **Link** 標籤 (連結)。
  3. 在 **Category** 下拉選單選 **General** (一般)。
  4. 找到 **Project Options** 編輯框,將 /subsystem:console 改為 /subsystem:windows。
  5. 確定 → 重新建置 (Rebuild All)。

四、 對應關係表

子系統連結器選項入口點適用專案類型
Console/SUBSYSTEM:CONSOLEmain / wmain主控台應用程式
Windows/SUBSYSTEM:WINDOWSWinMain / wWinMainGUI 應用程式 (MFC, SDK, Dialog-based)
Native (無子系統)/SUBSYSTEM:NATIVEDriverEntry核心模式驅動程式
POSIX/SUBSYSTEM:POSIXmainPOSIX 相容子系統 (極少用)

五、 常見衍生場景

  • MFC 專案誤建為 Win32 Console Application:專案屬性子系統仍為 Console,但代碼有 CWinApp 與 InitInstance。修正子系統即可。
  • 靜態庫 (.lib) 專案:無入口點,子系統設定無影響,但建議設為 Not Set 或一致。
  • DLL 專案:入口點 DllMain,子系統通常設為 Windows (或同呼叫端)。

六、 現代 VS (2010+) 設定位置

專案右鍵 → Properties → Linker → System → SubSystem
選項:Console (/SUBSYSTEM:CONSOLE) / Windows (/SUBSYSTEM:WINDOWS) / Native / EFI Application

總結

GUI 專案必須用 /SUBSYSTEM:WINDOWS,Console 專案用 /SUBSYSTEM:CONSOLE。VC6.0 在 Link 標籤 General 類別中直接修改 /subsystem:console 為 /subsystem:windows,30 秒解決 LNK2001 _main。專案類型與子系統設定**必須一致**,否則連結器永遠找不到預期的入口點符號。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved