2

背景:供应商为我提供了 ActiveX Dll,没有头文件或 .tlb 文件或任何类似的东西。我正在使用 Visual Stdio 2010 并使用 win32 C++。

我面临的问题是如何加载或引用 dll?

我无法通过解决方案资源管理器引用 dll,因为它是非托管项目。当我尝试使用#import 时,它给了我编译错误,提示找不到 XXX.tlb 文件。但我没有 .tlb 类型的文件。我尝试的另一个选项是使用 OLE 查看器打开 dll 并复制 dll 定义,然后粘贴到我使用 Visual Studio 创建的 .idl 扩展名文件中。然后我在 idl 文件上执行 midl 以创建 .h 文件,但这也无济于事。当我尝试使用这些类时,它给了我“无法使用或引用抽象类”错误。

还有其他关于此事的问题,但不是直截了当的,答案没有标记为已回答或赞成。

我想知道在 Visual Studio 2010 的 win32 C++ 项目中加载 ActiveX dll 有哪些不同的方法,什么时候应该首选哪一种?如果有一个线程实际上解决了我的问题,请指出我。

谢谢

4

2 回答 2

4

如果您能够使用 OLE View 查看接口定义,则表示类型库已嵌入到 dll 资源中。因此,如果您使用#import "YourActiveX.dll"它应该可以工作。

于 2012-06-03T06:06:53.990 回答
0

你需要

  1. 使用 regsvr32 在 windows 中注册 COM (Active X) 组件:regsvr32 my_dll.dll
  2. 然后使用 COM 与组件进行交互。这是一个很好的教程
于 2012-06-02T23:16:38.083 回答