無法解析的符號錯誤

2021-06-27 17:08:50 字數 1411 閱讀 9580

**:

注意:.exe檔案必須和dll檔案在同乙個目錄下,可將exe檔案生成路徑設定為lib資料夾路徑!

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.

僅供參考.

考慮可能的原因:

[0]出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.

[1]只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析

[2]宣告和定義沒有統一,造成鏈結不一致,無法解析

[3]沒有在專案屬性頁的鏈結器的命令列選項加入相應的類包。

[4]沒有在c++包含目錄和庫目錄加入相應的類包路徑

[5]在測試工程中被測檔案目錄可能需要包含被測類的cpp定義檔案

[6]ice介面測試時,無法解析可能因為被測檔案沒有包含進相關的cpp檔案,另外,在testsuite_projectrun.h檔案中需要包含iprojectrun.h標頭檔案,及相關的標頭檔案(舉例)。

[7]import相關的無法解析內容,解決辦法是在鏈結器的依賴項中加入相應的動態庫

[8]出現如下錯誤的原因一般是動態庫沒有包進來。__imp

projectrun.obj : error lnk2019: 無法解析的外部符號 __imp__starthistorylocalmodule,該符號在函式 "protected: virtual int __thiscall hirtdb::cprojectrun::dostart(void)" (?dostart@cprojectrun@hirtdb@@maehxz) 中被引用

[9]error lnk2001: 無法解析的外部符號 __imp___crtdbgreportw

工程屬性,c/c++,**生成,執行時庫選擇mdd,

[9]無法解析的外部符號"__declspec(dllimport) public: int __thiscall hirtdb::ctagtree::getobjecta(int,struct hirtdb::sbasereadprops const &,struct hirtdb::sbasereadvalues &)" (__imp_?getobjecta@ctagtree@hirtdb@@qaehhabusbasereadprops@2@aausbasereadvalues@2@@z),該符號在函式"public: int __thiscall hirtdb::cstringimpl::get(int,struct hirtdb::sstringreadprops const &,struct hirtdb::sstringreadvalues &)" (?get@cstringimpl@hirtdb@@qaehhabusstringreadprops@2@aausstringreadvalues@2@@z) 中被引用

原因可能是工程配置檔案中有多餘選項,請參考其他模組的配置選項,不要有多餘配置。

關於無法解析外部符號的錯誤

無法解析外部符號,表面意思還是比較清楚的。但當出了問題的時候呢,就不太好解決了。最常出現問題的原因 1.沒有包含標頭檔案 2.沒有包含庫檔案 3.靜態成員變數沒有在類外定義 這裡,我主要想說的是類中靜態成員變數的問題。為啥我們沒有在類外定義靜態成員變數就會報這種錯誤呢。分析一下編譯器對靜態成員變數的...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...