无法将类型为“*Class”的 COM 对象强制转换为接口类型 失败原因.
在用.net2.0调用COM的某方法时报:
System.InvalidCastException: 无法将类型为“*Class”的 COM 对象强制转换为接口类型“I*”。此操作失败的原因是对 IID 为“{BBB9E30B-B4EB-4560-B5A7-1B59B33EF6BF}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE)) .
对比了能正确调用的接口和不能正确调用的区别,发现
[
object,
uuid(66F0009A-EAAC-4C78-9EF4-9617D49D50A2),
dual, //---------------------错误接口没有设置这个属性.
nonextensible,
helpstring(""),
pointer_default(unique)
]
interface IGDataBase : IDispatch{
................
}
加上dual 之后测试,通过.
在
里有更详细的说明.