1. 程式人生 > >MSVCRTD.lib(crtexe.obj) : error LNK2019: 無法解析的外部符號 _main,該符號在函式 ___tmainCRTStart

MSVCRTD.lib(crtexe.obj) : error LNK2019: 無法解析的外部符號 _main,該符號在函式 ___tmainCRTStart

在程式設計時經常遇到“無法解析的外部符號 _main,該符號在函式 ___tmainCRTStartup 中被引用”這樣的錯誤,最近看了一些這方面的書籍,現將解決方案大概敘述一下:

連線程式在負責連線可執行程式時,選擇相應的c/c++執行時啟動函式。如果設定了/subsystem:windows連線程式開關,那麼連線程式會試圖尋找WinMain或wWinMain函式。如果連個函式都不存在,那麼就會返回一個“一個未解決的外部符號”(無法解析的外部符號 _main,該符號在函式 ___tmainCRTStartup 中被引用)

同樣,如果設定了/subsystem:console連線程式開關,那麼連線程式就會試圖尋找main函式或者wmain函式,如果找不到這連個函式是,連線程式返回unresolved externel symbol錯誤資訊。

變成新手容易犯的一個錯誤是,建立應用程式時選擇了錯誤的應用程式型別。例如,開發人員建立了一個新的Win32應用程式專案,並給這個專案建立了一個入口函式main。在這種情況下,建立應用程式時,開發人員就會看到一個連線程式的錯誤資訊。這是因為Win32應用程式專案設定了/subsystem:windows連線程式開關,但是卻找不到相應的Winmain或者wWinmain函式。這是侯你可以有以下幾種解決方案。

1 將main函式改為Winmain函式

2 將/subsystem:windows開關改為/subsytem:console

3全部刪除/subsytem:windows開關,讓連線程式根據原始碼中實現的函式進行正確的操作。

更改/subsystem:windows的方法:

右鍵點選-->專案,選擇---->屬性,屬性頁 視窗彈出;



接著,點選聯結器->系統,在右側會看到“子系統”選項,在這裡可以選擇相應的連線程式開關.