From C#私はC++で書かれたOLEインターフェイスを呼び出そうとしています。 C++コードの.ODLファイルから署名は、以下のとおりです。ここでC#から* VARIANTパラメータを必要とするアンマネージOLEインターフェイスを呼び出すにはどうすればよいですか?
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#typeなどのすべての組み合わせを試しましたが、私は成功していないと思います。
C++コードは変更できませんのでご注意ください。
何か提案がありがとうございます。
https://msdn.microsoft.com/en-us/library/aa719104(VS.71).aspxを参照してください。VARIANTはObjectです。 –