2009-10-14 45 views
0

我有一個使用另一個動態庫(依賴項)的動態庫(插件)。我以兩種方式使用依賴關係: a。通過在依賴關係中定義的類實例化對象 b。通過繼承依賴關係中定義的類鏈接錯誤:缺少符號但輸出符號(在exp和lib中)

當執行。時,沒有鏈接錯誤。但是在做b時,我有一個鏈接錯誤,指出我缺少一些符號(LNK2001)。我在.lib/.exp中查找了確切的錯位名稱,並確實發現MSVC(2005)所說的符號缺失。

說我使用Qt並且缺失的符號是在moc文件(父類的staticMetaObject)中自動生成的符號可能很重要。另外,說我在調試和發佈時都會遇到這些錯誤可能是相關的,這意味着它們沒有被「優化」(我甚至嘗試過/ OPT:NOREF/OPT:NOICF,儘管它在調試版本中是默認的,這些符號在lib文件中...)

即使符號在那裏,我該如何得到這個鏈接錯誤?最重要的是,我該如何解決這些錯誤?

感謝您的幫助!

回答

1

你可能想要確保這個類正在被聲明爲__declspec(dllexport)(建設時)和__declspec(dllimport)(當連接時)?

請參閱this link

+0

好吧,現在我覺得很傻。事實上,導入宏被定義爲什麼(不是__declspec(dllimport))。 我只是不明白爲什麼它的情況下a。但不是在情況b。換句話說,爲什麼你必須導入你派生出來的類,而不是直接使用那些類? – Geeho 2009-10-14 18:43:07

+0

基於以上鍊接的我的猜測是仍然可以調用某些方法(例如,如果它們在頭中聲明爲內聯或者它們是虛擬的),但是第二個需要的東西是編譯器/鏈接器不會立即手頭上,你會得到錯誤。 – asveikau 2009-10-14 18:58:08