1

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

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

共同类同时实现IDerivedIBase(以及一些其他接口):

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

co-class 是单元线程的。当 MTA 客户端线程获取IDerived并尝试调用其任何方法(继承自IBase)时,它会在代理/存根中的某处崩溃。在 STA 中它运行良好,所以我相信IDerived没有正确编组。另一方面,如果我IBase明确地 QI 或者如果我添加一个方法到IDerived,一切正常。

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

4

0 回答 0