无法在C ++应用程序中导入dll

时间:2012-04-05 15:53:35

标签: c++ visual-studio-2010 dll

我有一个名为hecom32.dll的dll。我想在我的应用程序中使用它。我知道以下内容:

#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

1 个答案:

答案 0 :(得分:4)

只有在hecom32.dll实现COM服务器并且将类型库嵌入为资源时,这才能正常工作。您可以使用File + Open + File检查,选择dll。您将看到列出的资源,如果您打开节点,应该有一个标记为“TYPELIB”的资源ID为1。

肯定会丢失,错误信息也是如此。嵌入类型库是一种约定,它不是必需的。只需将它作为.tlb文件保持独立即可。当然,它可能根本不是COM服务器。您可以通过在dll上运行Dumpbin.exe / exports来查看。 COM服务器至少有一个名为“DllGetClassObject”的导出。

如果这些都没有,那么您最好联系DLL的所有者,并寻求有关如何正确使用它的帮助。这通常需要一个带有导出函数声明的.h文件和一个.lib文件,以便你可以链接它。