2012-04-05 25 views
0

我有一個dll叫hecom32.dll。我想在我的應用程序中使用它。我acll如下:無法導入dll在C++應用程序

#import "hecom32.dll" 

而且我得到以下錯誤:

enter Error 1 error C1083: Cannot open type library file: 'c:\users\dvargo\documents\visual studio 2010\projects\johnny\johnny\hecom32.dll': Error loading type library/DLL. c:\users\dvargo\documents\visual studio 2010\projects\johnny\johnny\johnny.cpp 6 1 Johnny 

顯然它不能添加。但我不確定要確定它有什麼問題。有沒有什麼辦法可以分析文件,看看爲什麼不能導入。有沒有不同的方式來使用dll中的功能?

我使用Visual Studio 2010

+0

聲音像DLL沒有類型庫。 – 2012-04-05 15:57:34

+0

http://msdn.microsoft.com/en-us/library/et4zwx34%28v=vs.80%29.aspx – selalerer 2012-04-05 15:58:43

回答

4

如果hecom32.dll實現COM服務器,並具有作爲資源嵌入類型庫這隻會正常工作。你可以用File + Open + File來檢查,選擇dll。您將看到列出的資源,如果您打開該節點,應該有一個標記爲「TYPELIB」的資源ID爲1的資源。

當然缺少這個錯誤信息。嵌入類型庫是一種慣例,不是必需的。只要將它保存爲一個.tlb文件也是可以的。當然,它可能根本不是COM服務器。你可以通過在dll上運行Dumpbin.exe/exports來看到。一個COM服務器至少有一個名爲「DllGetClassObject」的導出。

如果沒有這個出來,那麼你最好聯繫DLL的所有者,並尋求如何正確使用它的幫助。這通常需要一個帶有導出函數聲明的.h文件和一個.lib文件,以便您可以將其鏈接。

+0

感謝您的幫助。如果它保存在一個單獨的.tlb文件中,它是否會有相同的名稱? – user489041 2012-04-05 16:06:44

+0

不一定,它可以是任何東西。這將由業主記錄。你至少有一本手冊嗎? – 2012-04-05 16:08:27

+0

我確實,但它的德文:(現在,我已經嘗試了你的第一個建議,它似乎沒有TYPELIB – user489041 2012-04-05 16:09:36

相關問題