提示出現(xiàn)unresolved external symbol _main的解決方法
更新時(shí)間:2007年11月06日 22:00:57 作者:
提示出現(xiàn)unresolved external symbol _main搜了下找了下原因如下
在創(chuàng)建MFC項(xiàng)目時(shí), 不使用MFC AppWizard向?qū)? 如果沒有設(shè)置好項(xiàng)目參數(shù), 就會在編譯時(shí)產(chǎn)生很多連接錯(cuò)誤, 如error LNK2001錯(cuò)誤, 典型的錯(cuò)誤提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
下面介紹解決的方法:
1. Windows子系統(tǒng)設(shè)置錯(cuò)誤, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows項(xiàng)目要使用Windows子系統(tǒng), 而不是Console, 可以這樣設(shè)置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:console改成/subsystem:windows
2. Console子系統(tǒng)設(shè)置錯(cuò)誤, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
控制臺項(xiàng)目要使用Console子系統(tǒng), 而不是Windows, 設(shè)置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:windows改成/subsystem:console
3. 程序入口設(shè)置錯(cuò)誤, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
通常, MFC項(xiàng)目的程序入口函數(shù)是WinMain, 如果編譯項(xiàng)目的Unicode版本, 程序入口必須改為wWinMainCRTStartup, 所以需要重新設(shè)置程序入口:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Category中選擇Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4. 線程運(yùn)行時(shí)庫設(shè)置錯(cuò)誤, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
這是因?yàn)镸FC要使用多線程時(shí)庫, 需要更改設(shè)置:
[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
在Category中選擇Code Generation,
再在Use run-time library中選擇Debug Multithreaded或者multithreaded
其中,
Single-Threaded 單線程靜態(tài)鏈接庫(release版本)
Multithreaded 多線程靜態(tài)鏈接庫(release版本)
multithreaded DLL 多線程動態(tài)鏈接庫(release版本)
Debug Single-Threaded 單線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded 多線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded DLL 多線程動態(tài)鏈接庫(debug版本)
單線程: 不需要多線程調(diào)用時(shí), 多用在DOS環(huán)境下
多線程: 可以并發(fā)運(yùn)行
靜態(tài)庫: 直接將庫與程序Link, 可以脫離MFC庫運(yùn)行
動態(tài)庫: 需要相應(yīng)的DLL動態(tài)庫, 程序才能運(yùn)行
release版本: 正式發(fā)布時(shí)使用
debug版本: 調(diào)試階段使用
在創(chuàng)建MFC項(xiàng)目時(shí), 不使用MFC AppWizard向?qū)? 如果沒有設(shè)置好項(xiàng)目參數(shù), 就會在編譯時(shí)產(chǎn)生很多連接錯(cuò)誤, 如error LNK2001錯(cuò)誤, 典型的錯(cuò)誤提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
下面介紹解決的方法:
1. Windows子系統(tǒng)設(shè)置錯(cuò)誤, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows項(xiàng)目要使用Windows子系統(tǒng), 而不是Console, 可以這樣設(shè)置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:console改成/subsystem:windows
2. Console子系統(tǒng)設(shè)置錯(cuò)誤, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
控制臺項(xiàng)目要使用Console子系統(tǒng), 而不是Windows, 設(shè)置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:windows改成/subsystem:console
3. 程序入口設(shè)置錯(cuò)誤, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
通常, MFC項(xiàng)目的程序入口函數(shù)是WinMain, 如果編譯項(xiàng)目的Unicode版本, 程序入口必須改為wWinMainCRTStartup, 所以需要重新設(shè)置程序入口:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Category中選擇Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4. 線程運(yùn)行時(shí)庫設(shè)置錯(cuò)誤, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
這是因?yàn)镸FC要使用多線程時(shí)庫, 需要更改設(shè)置:
[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
在Category中選擇Code Generation,
再在Use run-time library中選擇Debug Multithreaded或者multithreaded
其中,
Single-Threaded 單線程靜態(tài)鏈接庫(release版本)
Multithreaded 多線程靜態(tài)鏈接庫(release版本)
multithreaded DLL 多線程動態(tài)鏈接庫(release版本)
Debug Single-Threaded 單線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded 多線程靜態(tài)鏈接庫(debug版本)
Debug Multithreaded DLL 多線程動態(tài)鏈接庫(debug版本)
單線程: 不需要多線程調(diào)用時(shí), 多用在DOS環(huán)境下
多線程: 可以并發(fā)運(yùn)行
靜態(tài)庫: 直接將庫與程序Link, 可以脫離MFC庫運(yùn)行
動態(tài)庫: 需要相應(yīng)的DLL動態(tài)庫, 程序才能運(yùn)行
release版本: 正式發(fā)布時(shí)使用
debug版本: 調(diào)試階段使用
您可能感興趣的文章:
- 深入理解C語言 static、extern與指針函數(shù)
- C語言基礎(chǔ)知識點(diǎn)解析(extern,static,typedef,const)
- c語言中static和extern的用法詳細(xì)解析
- C++中的extern “C”用法詳解
- C++中的extern聲明變量詳解
- 解決Eclipse add external jars運(yùn)行出現(xiàn)java.lang.NoClassDefFoundError的方法
- AS3 navigateToURL導(dǎo)致ExternalInterface 執(zhí)行失敗問題
- C/C++ 中extern關(guān)鍵字詳解
- 實(shí)例詳解C/C++中extern關(guān)鍵字
- 詳解C語言正確使用extern關(guān)鍵字
相關(guān)文章
C#?Winform文本面板帶滾動條的實(shí)現(xiàn)過程
當(dāng)數(shù)據(jù)過多時(shí),往往無法在一頁中展示,所以非常需要一個(gè)滾動條來調(diào)節(jié)頁面內(nèi)容,這篇文章主要給大家介紹了關(guān)于C#?Winform文本面板帶滾動條的實(shí)現(xiàn)過程,需要的朋友可以參考下2022-12-12WPF ComboBox獲取當(dāng)前選擇值的實(shí)例詳解
這篇文章主要介紹了WPF ComboBox獲取當(dāng)前選擇值的實(shí)例詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01c#中object、var和dynamic的區(qū)別小結(jié)
這篇文章主要給大家介紹了關(guān)于c#中object、var和dynamic的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09分享我在工作中遇到的多線程下導(dǎo)致RCW無法釋放的問題
最近在做項(xiàng)目中遇到一個(gè)問題,在調(diào)用一個(gè)類庫中的方法時(shí),出現(xiàn)如下異常信息:嘗試釋放正在使用的RCW,活動線程或其他線程上正在使用該 RCW,釋放正在使用的 RCW 的嘗試會導(dǎo)致?lián)p壞或數(shù)據(jù)丟失2015-12-12詳解C#中delegate/event/EventHandler/Action/Func的使用和區(qū)別
這篇文章主要為大家詳細(xì)介紹了C#中delegate、event、EventHandler、Action和Func的使用與區(qū)別,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-04-04C#數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的實(shí)例代碼
C#數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表的實(shí)例代碼,需要的朋友可以參考一下2013-03-03C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解
這篇文章主要介紹了C# 當(dāng)前系統(tǒng)時(shí)間獲取及時(shí)間格式詳解的相關(guān)資料,這里提供代碼實(shí)例,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下2016-12-12C# 獲取當(dāng)前總毫秒數(shù)的實(shí)例講解
這篇文章主要介紹了C# 獲取當(dāng)前總毫秒數(shù)的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01