C#에서 C++로 작성된 OLE 인터페이스를 호출하려고합니다. 는 C++ 코드의 .ODL 파일의 서명은 다음과 같습니다C#에서 * VARIANT 매개 변수가 필요한 관리되지 않는 OLE 인터페이스를 어떻게 호출합니까?
[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() : 여기
long GetData1(int* data);
long GetData2(double* data);
long GetData3(VARIANT* data);
가 내 C# 코드의 샘플입니다 "유형 불일치"예외가 발생합니다.
GetData3()에서 In, Out, Ref, MarshallAs(), C# 형식 등의 모든 조합을 시도했지만 성공하지 못했습니다.
C++ 코드는 변경할 수 없습니다.
의견을 보내 주시면 감사하겠습니다.
참조 https://msdn.microsoft.com/en-us/library/aa719104(VS.71).aspx VARIANT는 Object입니다. –