2012-03-27 14 views
1

我有第三方庫。 (msvc10)MT/MD(靜態cfgs)和動態DLL cfg。
我有QT + msvc10快遞+贏得sdk.7我有第三方庫,我有錯誤LNK2019:無法解析的外部...如何調查以解決它

好吧,我用提供的,(使用庫)的現有的例子我不能編譯.....我也有同樣的4個未解決的外部錯誤庫。 (但我沒有爲其他錯誤) 我不支持這些lib ......(但它們是合法的,我是一個沒有權利的成員)

哪些是調查可能的步驟固定?我在哪裏看? 謝謝。

編輯1:

的錯誤是:

TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" ([email protected]@@UAE_N [email protected]@[email protected]@@Z) 
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" ([email protected]@@UAE_N [email protected]@[email protected]@@Z) 
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" ([email protected]@@UAE_N [email protected]@[email protected]@@Z) 
TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(class OdTtfDescriptor const &,class OdString &)" ([email protected]@@UAE_N [email protected]@[email protected]@@Z) 
..\exe\OdaQtApp.exe : fatal error LNK1120: 13 unresolved externals 

在這個職位,我已經收到了解決方案:我有Advapi32.lib鏈接... 我的問題是:我怎麼能知道這個 ?
我已經試過dependencyywalker,但它不能使用的.lib的....

+0

發佈錯誤消息,並說出您希望找到哪些外部信息庫。 – Ben 2012-03-27 09:12:21

+0

什麼是錯誤消息? (爲什麼我們不得不在這裏問這個問題?)用於鏈接的命令行也可能有幫助。 – 2012-03-27 09:13:48

回答

11

在這篇文章中,我收到了一個解決方案:我必須鏈接到Advapi32.lib ...我的問題是:我怎麼能知道這

當你從鏈接的「未解析的外部」的錯誤,這意味着它正在尋找一個匹配函數或變量名,一些對象文件的需求和?鏈接器無法找到在其中一個目標文件或庫中定義的名稱。

首先查看這些錯誤中的第一個RS(我已經重新格式化它一下,使其略微更具可讀性 - 我鼓勵喲你遇到的其中一個相同的下一次做):

TD_ExamplesCommon.lib(ExHostAppServices.obj) : error LNK2019: unresolved external symbol 
     [email protected] referenced in function 
     "public: virtual bool __thiscall ExHostAppServices::ttfFileNameByDescriptor(
      class OdTtfDescriptor const &,class OdString &)" 
     ([email protected]@@UAE_N [email protected]@[email protected]@@Z) 

有一個在該錯誤消息了很多東西(其中大部分可能看起來像垃圾)。幸運的是,在大多數情況下,它可以被忽略。最重要的一點是鏈接器正在尋找符號[email protected]該名稱上有一些垃圾,但幸運的是它無論如何都非常容易識別。

  • __imp__前綴表示它正在尋找DLL導入。在幾乎所有可以忽略的情況下,您的目的。
  • @32後綴是Microsoft編譯器爲特定調用約定的函數名稱添加的。這也是通常無法滿足您的重要(備案則表明該函數需要32個字節參數數據)

因此,我們留下了一個事實,即連接器正在尋找RegEnumValueW。這看起來很像Win32 API的名稱。

如果你看一下文檔的RegEnumValueW(或RegEnumValue,因爲許多的Win32 API既有AW變種來處理ANSI/Unicode版本),我們會在文檔中找到該位的信息:

Requirements 

    Minimum supported client  Windows 2000 Professional 
    Minimum supported server  Windows 2000 Server 
    Header       Winreg.h (include Windows.h) 
>> Library       Advapi32.lib 
    DLL        Advapi32.dll 
    Unicode and ANSI names   RegEnumValueW (Unicode) and 
            RegEnumValueA (ANSI) 

這就是你如何知道你需要advapi32.lib

因此,在將來,當您從鏈接器中收到「無法解析的外部」錯誤時,只需忽略錯誤消息中的大部分錯誤,並集中注意它所表示的無法找到的符號 - 那會導致您庫,目標文件或其他可能缺失的項目。

只是爲了記錄,advapi32.lib將是大多數複雜的Windows應用程序所需要的。

0

您是否在鏈接器選項中輸入了* .lib文件? (輸入 - >附加依賴項),另外還有庫目錄中.lib的路徑選項?

+0

是的,我有。我有一個部分的解決方案,我編輯了主要帖子......謝謝 – tonnot 2012-03-27 10:10:28

相關問題