QT出現問題 無法解析的外部符號 未找到文件**.obj

轉載地址:http://blog.csdn.net/hzt12345hf/article/details/52398000

無法解析的外部符號出現可能的原因:
[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) 中被引用

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


自己編了個小程序,一開始編譯忘記在.pro工程中加入類庫,所以導致出現如下圖所示錯誤,加上類庫後清除重新編譯,發現還是同樣的錯誤,百思不解,搜百度有網友提議刪除目錄下生成的調試文件夾,然後嘗試過後發現此方法可行,這裏做個記錄,以防以後又發生這樣的錯誤
這裏寫圖片描述


很慶幸我的問題在[0]出現無法解析可能是因爲lib文件不正確,比如64位的編譯配置,結果使用的是32位的lib包. 

因爲是從前輩那獲取的資源,這裏要感謝一下"星星的眼睛"<[email protected]>;,他給的資源是Qt4.8+32位

我現有的系統是Qt5.2+win10_64,

另外Qt5 取消了

    //QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
    //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));這兩個函數。

可利用

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));這一個函數代替


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章