2012-04-05 61 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

相关问题