2011-05-11 32 views
1

我有一個DLL與其導入庫。當我嘗試引用導入庫時,出現鏈接器錯誤,導致某些函數無法解析。我認爲在DLL及其導入庫的版本中存在不匹配。 有什麼辦法可以檢查導入庫是否完全匹配它的DLL,而不用通過DumpBin手動檢查大量函數?如何檢查LIB導入庫是否完全匹配其DLL?

回答

1

問題是頭文件包含的函數沒有在.lib文件中定義。很可能你有一個新的頭文件和一個過時的.lib文件。

可能的解決方案:

0

當你鏈接二進制只* .lib庫很重要(包括導入庫,但顯然不包括DLL)。鏈接器甚至可能不知道它是導入庫而不是其他靜態庫。還可以創建混合庫,其中包含一些對* .lib文件進行靜態貢獻的函數,以及從某些DLL導入的其他函數。

您未解析的函數僅存在於* .lib庫(包括導入庫)中。 如果你確實鏈接你的導入庫,並且確定你的DLL導出了未解析的函數,那麼你的導入庫不匹配或者導致導出庫不能導出該函數(例如,這些函數可能沒有列在DLL的* .def文件中項目)。