我正在研究一个FireBreath项目,该项目制作了一个插件应用程序,该应用程序包装了ActiveX控件的功能。我甚至有ActiveX控件的源代码。
基于FireBreath示例页中提供的示例,我编写了必要的包装器类来包装activex控件。
为了从firebreath项目中调用事件接口、activex控件的类和函数,我从firebreath示例页面下载的程序使用如下语句向项目公开activex控件类型信息
// Import the ActiveX control's typelib so we can easily call methods, etc.
// on the ActiveX control.
#import "PROGID:FBExampleCtl.xpcmdbutton" no_namespace, raw_interfaces_only$
但是当我在程序中使用这样的东西时,它给出了一个错误,无法找到头文件中包含的类型库。
所以我无法理解如何将activex控件的类型库暴露给我的项目,并且还使用我的程序中类型库中定义的方法和函数。
ps:1)我还安装了Oleview来检查系统中是否有类型库可用。从那以后,我还尝试了另一种选择,如
#import "GUID of the typelibrary". But this also didnot work.
我也试过
#import "myrequireddll.dll"
,还提到了在调试环境中DLL的路径。但是编译器仍然给出相同的错误,无法找到文件。
您可以使用下面的# import指令在头文件(.h)中直接导入TLB文件
#import "C:<PATH_TO_YOUR_TLB_FILE>.tlb" no_namespace, raw_interfaces_only
查看我的博客设置Visual Studio 2010的MASM32编程。它讨论了如何设置MASM32,然而,它展示了如何添加第三方类型库并将文件包含到您的项目中。