處理連結錯誤LNK2001
以下是可能產生LNK2001錯誤的原因: 一.由於編碼錯誤導致的LNK2001
1.不相匹配的程式程式碼或模組定義(.DEF)檔案能導致LNK2001。例如, 如果在C++原始檔內聲明瞭一變數“var1”,卻試圖在另一檔案內以變數“VAR1”訪問該變數,將發生該錯誤。2.如果使用的行內函數是在.CPP檔案內定義的,而不是在標頭檔案內定義將導致LNK2001錯誤。3.呼叫函式時如果所用的引數型別同函式宣告時的型別不符將會產生LNK2001。4.試圖從基類的建構函式或解構函式中呼叫虛擬函式時將會導致LNK2001。5.要注意函式和變數的可公用性,只有全域性變數、函式是可公用的。靜態函式和靜態變數具有相同的使用範圍限制。當試圖從檔案外部訪問任何沒有在該檔案內宣告的靜態變數時將導致編譯錯誤或
1.如果編譯時使用的是/NOD(/NODEFAULTLIB)選項,程式所需要的執行庫和MFC庫在連線時由編譯器寫入目標檔案模組,但除非在檔案中明確包含這些庫名,否則這些庫不會被連結進工程檔案。在這種情況下使用/NOD將導致錯誤LNK2001。2
三.主要解決方法:
解決外部符號錯誤:_main,[email protected],__beginthreadex
在建立MFC專案時, 不使用MFC AppWizard嚮導, 就會在編譯時產生很多連線錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol [email protected]
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected]
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
1. Windows子系統設定錯誤, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows專案要使用Windows子系統, 而不是Console, 可以這樣設定:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:console改成/subsystem:windows
2. Console子系統設定錯誤, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol [email protected]
控制檯專案要使用Console子系統, 而不是Windows, 設定:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:windows改成/subsystem:console
3. 程式入口設定錯誤, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol [email protected]
通常, MFC專案的程式入口函式是WinMain, 如果編譯專案的Unicode版本, 程式入口必須改為wWinMainCRTStartup, 所以需要重新設定程式入口:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Category中選擇Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4. 執行緒執行時庫設定錯誤, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
這是因為MFC要使用多執行緒時庫, 需要更改設定:
[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
再在Use run-time library中選擇Debug Multithreaded或者multithreaded
其中,
Single-Threaded 單執行緒靜態連結庫(release版本)
Multithreaded 多執行緒靜態連結庫(release版本)
multithreaded DLL 多執行緒動態連結庫(release版本)
Debug Single-Threaded 單執行緒靜態連結庫(debug版本)
Debug Multithreaded 多執行緒靜態連結庫(debug版本) )
Debug Multithreaded DLL 多執行緒動態連結庫(debug版本)
相關推薦
處理連結錯誤LNK2001
以下是可能產生LNK2001錯誤的原因: 一.由於編碼錯誤導致的LNK2001 1.不相匹配的程式程式碼或模組定義(.DEF)檔案能導致LNK2001。例如, 如果在C++原始檔內聲明瞭一變數“var1”,卻試圖在另一檔案內以變數“VAR1”訪問該變數,將發生該錯誤。2.如果使用的行內函數是在.C
VC++的連結錯誤LNK2001
帖子轉自zhhxidian2005的部落格 感謝作者提供內容! 晚風也渡 發表於 2003-1-9 17:51:45主題 VC++的連結錯誤LNK2001(ZT)學習VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤
VC++的連結錯誤LNK2001(轉)
在VC/MFC社群中經常看到有人問一些編譯錯誤怎麼解決的問題,很多錯誤都是VC++的連結錯誤LNK2001,所以把這篇我記不得從什麼地方獲得的文章貼出來,也許對大家有點幫助。在此要感謝本文的原始作者,為他的專業精神! 學習VC++時經常會遇到連結錯誤LNK20
VC++ 6.0 連結錯誤 ”LNK2001“原因及解決辦法
出現error LNK2001主要是有以下原因導致:1.在工程中include "***.h"添加了,但沒有Add to Project,然而工程中又要用到***.h中定義的函式。2.應用lib檔案導致。解決方法:1.將***.h 和***.cpp Add to Project. 如在此可能是hcomm.h,
連結錯誤LNK2001(轉貼)
學習VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連線錯誤
VC++的連結錯誤LNK2001(轉貼)
學習VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連線錯誤LNK2001非常困難。 初學者
VC++經常會遇到的連結錯誤LNK2001
學習VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連線錯誤
【菜鳥】VC++的連結錯誤LNK2001
學習VC++時經常會遇到連結錯誤LNK2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其LNK2001錯誤,常常使人不明其所以然。如果不深入地學習和理解VC++,要想改正連線錯誤LNK2001非常困難。 初學者
7.3 錯誤處理-連結程序
-module(normal). -export([start/1, p1/1, test/1]). start(N) -> register(start, spawn_link(normal, p1, [N - 1])). p1(0) -> top1();
Mysql 下載安裝及連結錯誤處理
Mysql 安裝最方便的是用rpm包, 官方網站有下載。 對開發人員來說, 需要下載的包有幾個: Mysql-server 服務端 Mysql-client 客戶端,通過 mysql -uroot -p 可以進入到伺服器端檢視資料庫(看遠端主機用 mysq
keil 編譯通過 連結錯誤 解決
今天試了一個nordic sdk5_12.3的例子,開啟後編譯連結,結果編譯通過,連結卻提示有4個函式沒有宣告,但是回頭再看檔案,明明有引用標頭檔案啊,,為什麼還不過呢?我又試了使用extern宣告還是不行。 linking... .\_build\nrf51422_xxac.axf: Er
如何處理Eclipse錯誤訊息 The declared package does not match the expected package
我從github下載了一個開源專案後,匯入到自己Eclipse之後,遇到了這個煩人的錯誤訊息: The declared package "com.sap.smartService" does not match the expected package "main.java.com.sap.smartSer
如何處理Eclipse錯誤消息 The declared package does not match the expected package
下載 分享 開源項目 錯誤 rop cte 是我 遇到 images 我從github下載了一個開源項目後,導入到自己Eclipse之後,遇到了這個煩人的錯誤消息: The declared package "com.sap.smartService" does not m
【C++】 Debug 版的 C/C++ Python 擴充套件模組連結錯誤:Error LNK1104 cannot open file 'python27_d.lib
Debug 版的 C/C++ Python 擴充套件模組連結錯誤:Error LNK1104 cannot open file 'python27_d.lib' 環境配置 (1)python的lib 以及標頭檔案分別加到vc的include/lib directories中去。
.Net Core 商城微服務專案系列(五):使用Polly處理服務錯誤
專案進行微服務化之後,隨之而來的問題就是服務呼叫過程中發生錯誤、超時等問題的時候我們該怎麼處理,比如因為網路的瞬時問題導致服務超時,這在我本人所在公司的專案裡是很常見的問題,當發生請求超時問題的時候,我們希望能夠自動重試,或者是在發生服務錯誤時採取一定的策略,比如限流熔斷等等。 本篇將會使用Polly處理服
如何處理Docker錯誤訊息:please add——insecure-registry
本地安裝Kubernetes時,遇到如下的錯誤訊息: pleade add --insecure-registry gcr.io to daemon's arguments 解決方案:點選Docker的Preference選單:
遠端桌面連結錯誤:由於CredSSP加密Oracle修正
一.windows 10 家庭版 新增組策略(企業版跳過) 在桌面上新建檔案“add_gpedit.bat”,用記事本開啟,複製新增下面的程式碼 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packag
JavaScript區域性錯誤處理、全域性錯誤處理及錯誤上報模組設計
JavaScript引擎執行JavaScript程式碼時,會發生各種錯誤:可能是語法或拼寫錯誤,可能是瀏覽器差異(使用了瀏覽器特有功能),也可能是伺服器返回異常未處理,當然還有許多其它不可預知的因素。當錯誤發生時,JavaScript 引擎會中斷後續程式碼執行,並生成一個錯誤訊息。為了
MySQL錯誤處理--1146錯誤
在MySQL的主從複製過程中,出現了1146錯誤。提示的錯誤原因是:在預設的資料中找不到指定的表。show slave status\G;現實的同步狀態。Slave_IO_Running: YESSlave_SQL_Running: NoLast_Errno: 1146Last_Error: Error 'T
Qt Creator 編譯 ROS 包出現連結錯誤解決辦法
若編譯過程中,出現 cannot find -ltf cannot find -lroscpp ... 主要是因為 Qt 編譯 ROS 後連結環節出現問題,主要原因是 Qt 啟動時沒有載入 ROS 相關的環境變數,解決辦法如下: sudo vim /usr/share/ap