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

标签 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

最佳答案

只有当 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/

相关文章:

c++ - 以下任何配置是否会影响发布版本的性能

c - apr_dso_load 加载 DSO 失败

python - 确定一个 dll 是在调试中构建的还是使用 python 发布的

c++ - 我应该删除 vector<short> 吗?

c++ - 检测已知中心的部分隐藏椭圆的边界(OpenCV)

c++ - openMP 嵌套并行 for 循环与内部并行 for

mysql - 如何同时向3个表中插入和更新数据

c# - 将图像添加到 System.Net.Mail 消息

c++ - 为什么我不能给这个 int 赋值?

c++ - 使用着色器绘制多个对象 (GLEW)