use smart pointer
#import "...\xxx.dll" no_namespace
...

解决方案 »

  1.   

    智能指针访问COM DLL时,内部实现使用的是IDispatch(自动化), 还是VTBL(普通接口)?
      

  2.   

    对于双接口,VB通过类型库可以,实现早绑定直接访问vtbl
      

  3.   

    To Eyesing:有一个VB编写的COM DLL,支持双接口. 
    我现在用VC编写了一个Client,调用这个COM DLL.
    用导入类(Class Wizard...)的方法,可以调用COM DLL的方法. 但跟踪发现,这种调用是通过
    IDispatch->Invoke()实现的. 我的问题是, 是否可以在VC中用普通接口方法(vtbl), 实现访问VB编写的COM DLL, 例如实现如下调用:IVBClass *pIf = NULL;
    CoCreateInstance(
     ... ...
     IID_IVBClass,  // Interface ID to create
     (LPVOID*)&pIf);pIf->Method1(); 我该如何从VB编写的COM DLL中引出接口定义类 IVBClass ?不胜感谢
      

  4.   

    masterz已经说过了,还问什么,我来晚了
      

  5.   

    我的问题解决了.使用 masterz 说的智能指针并经过跟踪调试, 发现smart pointer内部使用了
    vtbl机制访问支持双接口的COM DLL. 通过vtbl访问COM DLL的核心汇编语句如下:call dword ptr [eax+xxh]谢谢以上所有网友,尤其感谢 masterz ,fantong