我有一个名为 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
最佳答案
只有当 hecom32.dll 实现 COM 服务器并将类型库作为资源嵌入时,这才会正常工作。您可以使用文件 + 打开 + 文件检查,选择 dll。您将看到列出的资源,如果您打开节点,应该有一个标记为“TYPELIB”且资源 ID 为 1 的资源。
肯定是遗漏了,错误消息也说明了这一点。嵌入类型库是一种约定,不是必需的。也可以将其作为 .tlb 文件单独保存。当然,它可能根本就不是 COM 服务器。您可以通过在 dll 上运行 Dumpbin.exe/exports 来查看。 COM 服务器至少有一个名为“DllGetClassObject”的导出。
如果这些都没有成功,那么您最好联系 DLL 的所有者并寻求有关如何正确使用它的帮助。这通常需要一个包含导出函数声明的 .h 文件和一个 .lib 文件,以便您可以链接它。
关于c++ - 无法在 C++ 应用程序中导入 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031875/