我有一个进程内COM服务器(dll,内置在MSVC10中),用于C#客户端。其中一个接口定义如下:
[
object,
uuid(some guid),
dual,
nonextensible,
helpstring("IDerived Interface"),
pointer_default(unique)
]
interface IDerived : IBase{
};
co-class实现了IDerived
和IBase
(以及其他一些接口):
[
uuid(some guid),
helpstring("SomeClass Class"),
noncreatable,
hidden
]
coclass SomeClass
{
[default] interface IDerived;
interface IBase;
// etc.
};
共同班级是公寓式的。当MTA客户端线程获取IDerived
并尝试调用其任何方法(继承自IBase
)时,它会在代理/存根中的某处崩溃。在STA中它运行良好,所以我认为IDerived
没有正确编组。另一方面,如果我明确地IBase
或者我向IDerived
添加了一个方法,那么一切都运作正常。
为什么空IDerived
没有正确编组?