我有一个进程内 COM 服务器(dll,内置于 MSVC10),用于 C# 客户端。其中一个接口定义如下:
[
object,
uuid(some guid),
dual,
nonextensible,
helpstring("IDerived Interface"),
pointer_default(unique)
]
interface IDerived : IBase{
};
共同类同时实现IDerived
和IBase
(以及一些其他接口):
[
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
的没有正确编组?