有一个第三方进程内com,用OLE/COM Object viwer能看到该组建的CLSID,和接口IID。现在有个问题就是在vc里面怎么才能调用这个com呢。。.h和idl文件都没有tlb文件也没有。。
我的理解是vc要显示的指明IMatch接口(该dll到处的接口是IMatch)。。现在问题是怎么定义该IMatch呢??例如:
::CoInitialize(NULL);
IMatch* pWatch=NULL;
HRESULT hr = CoCreateInstance (CLSID_Watch,NULL,CLSCTX_INPROC,IID_IMatch,(void**)&pWatch);
if(SUCCEEDED(hr))
{
//do something
}
::CoUninitialize();
现在的问题是IMatch是未声明的标识符,clsid和iid我都定义过了。

解决方案 »

  1.   

    #import进来,然后使用IMatchPtr,具体参照msxml使用方式
      

  2.   

    #import "dll path.dll"call....
      

  3.   

    OLE/COM Object viwer 可以导出.h和.idl文件
    或者直接用#import 导入dll
      

  4.   

    只有个dll,怎么导出.h和.idl
    用#import "a.dll"
    a.dll 里面的接口怎么描述?
      

  5.   

    在你的工程文件里面使用#import
    例如使用msxml就这样
    #import <msxml.dll> named_guids
    然后在工程里面直接使用就可以了,至于定义都在#import生成的文件中。
      

  6.   

    #import <msxml.dll> named_guids
    会生成TLI TLH
    IMatchPtr 会在里面定义的
      

  7.   

    谢谢楼上,那是不是可以有什么工具导出dll的一些接口信息呢。
    用midl编辑idl文件可以导出c的接口。
      

  8.   

    为无LIB的DLL制作LIB函数符号输入库
    ----------------------------------
    vckbase 20期电子杂志.