我用MFC写了一个COM组件DLL,定义了接口INetMan,然后在测试程序里面调用了#import包含了类型库文件,可是在我用CoCreateInstance函数的时候,编译器报第四个参数IID没有定义。我发现函数需要的参数IID_INetMan是定义在netman.cpp文件里面的,这是怎么回事?

解决方案 »

  1.   

    你用ODL,翻译出一个.c文件出来.
    如下:
    midl filename.odl /h
    它会生成一个.c的文件出来.(这里有你定义的组件与接口的CLISID和IID)
    你include它就可以了.
      

  2.   

    我用了#import技术,导入了组件。这个.h文件(你说的.c文件)VC.net已经帮我编译好了。但是在这个文件里面找不到IID_IMyInterface的定义。我自己在调用组件的文件中重新定义了这个IID_IMyInterface,编译运行正常。但是我还是没有弄清楚,如果我已经用了#import技术,难道还需要去包含一个什么头文件么?还有,我这样解决IID_IMyInterface的方式是不是正确的?