【发布时间】:2017-01-05 22:21:03
【问题描述】:
我试图从 C# 调用用 C++ 编写的 OLE 接口。 C++ 代码的 .ODL 文件的签名是:
long GetData1( int* data );
long GetData2( double* data );
long GetData3( VARIANT* data );
这是我的 C# 代码示例:
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface IMyInterface
{
[DispId(1)]
long GetData1 ( [In, Out] ref int data );
[DispId(1)]
long GetData2 ( [In, Out] ref double data );
[DispId(3)]
long GetData3 ( [In, Out, MarshalAs(UnmanagedType.IUnknown)] ref IntPtr data);
}
GetData1() 和 GetData2() 工作正常,但 GetData3() 会导致“类型不匹配”异常。
对于 GetData3(),我尝试了 In、Out、Ref、MarshallAs()、C# 类型等的每一种组合。我想都没有成功。
请注意 C++ 代码不能更改。
任何建议将不胜感激。
【问题讨论】: