2

我正在添加一个 C++ COM dll 作为对 C# 项目 (Visual Studio 2008) 的引用。VS 添加了引用,但是生成的互操作库不反映原始类型库 (.idl) 定义中的命名。这是我的库定义的样子:

[
   uuid(...),
   helpstring("MyLib")
]
library MyLib
{    
    [
        uuid(...),
        helpstring("MyCom CoClass")
    ]
    coclass MyComCoClass
    {
        [default] interface IMyInterface;
        interface IMyInheritedInterface;
        interface IMyBaseInterface;
    };
}

因此,IMyInterface 继承自 IMyInheritedInterface,而后者又继承自 IMyBaseInterface。添加此 COM 的 .dll 后,我希望所有这些接口都可用。在 VS 为上面的 typelib 生成的互操作程序集中,IMyInterface 变为 MyInterface。为什么以及是否有解决方法?

谢谢

4

1 回答 1

2

当接口是 coclass 的默认接口并且它仅由该 coclass 使用时,typelib 导入器会执行此操作。

因此,一种解决方法是向您的类型库添加另一个虚拟 coclass,并使 IMyInterface 也成为默认接口。

于 2009-08-24T09:04:16.007 回答