“空”继承的COM接口没有正确编组

时间:2012-10-25 19:16:25

标签: com marshalling idl

我有一个进程内COM服务器(dll,内置在MSVC10中),用于C#客户端。其中一个接口定义如下:

[
    object,
    uuid(some guid),
    dual,
    nonextensible,
    helpstring("IDerived Interface"),
    pointer_default(unique)
]
interface IDerived : IBase{
};

co-class实现了IDerivedIBase(以及其他一些接口):

[
    uuid(some guid),
    helpstring("SomeClass Class"),
    noncreatable,
    hidden
]
coclass SomeClass
{
    [default] interface IDerived;
    interface IBase;
    // etc.
};

共同班级是公寓式的。当MTA客户端线程获取IDerived并尝试调用其任何方法(继承自IBase)时,它会在代理/存根中的某处崩溃。在STA中它运行良好,所以我认为IDerived没有正确编组。另一方面,如果我明确地IBase或者我向IDerived添加了一个方法,那么一切都运作正常。

为什么空IDerived没有正确编组?

0 个答案:

没有答案