我写了两个com组件 com1 ,com2 .两个组件接口里面都会用到结构体struct1作为参数.
如果每个com里面都写一个结构体代码冗余,而且结构数据之间只有相互转换才能调用双方的接口.
我尝试过使用写一个公共的idl文件采用#import "xxx.idl"的方式在com组件里面导入.但是在一个app中同时使用两个com组件的时候会出现命名冲突,也就是还是两个独立的结构.寻觅半天无解求大虾帮助一下.

解决方案 »

  1.   

    用VARAINT*等指针,然后内部转换,而且最好用SAFEARRAY来替换结构体,比较适合COM
      

  2.   

    不太明白楼主的意思,com1 和com2 是在同一个宿主里吗?如果是的话,为什么不把结构体定义在idl文件里,这样接口都可以引用到。
      

  3.   

    #1楼 得分:0回复于:2012-07-01 15:49:11用VARAINT*等指针,然后内部转换,而且最好用SAFEARRAY来替换结构体,比较适合COM 
     
      

  4.   

    方法很多,比如我这么做
    STDMETHOD(Execute)(IInPutFactory * pInput, IOutPutFactory * pOutput)
    {
    ...
    }
    //作为参数,然后使用一个公共的管理组件,或者rename,这样避开了idl或者如LS所述的方法,结构体改成VARAINT*等,接口使用IDispath*等。