C# (2.0/3.5)에서 일부 레거시 Delphi 5 DLL을 사용하려고합니다.C#에서 OleVariant 마샬링
function SimpleExport: OleVariant; stdcall;
function BiDirectionalExport(X: OleVariant; var Y: OleVariant): OleVariant; stdcall;
내가 Marshal.GetDelegateForFunctionPointer를 사용하여 대의원 이러한 설정하고자하는,하지만 난 제대로 마샬링 데이터를 얻는 데 문제 : 내 보낸 기능 중 일부는 다음과 같은 선언됩니다. LoadLibrary 및 GetProcAddress의 kernel32 가져 오기를 사용하고 있으므로 GetDelegateForFunctionPointer를 사용하여 정적 p/invoke 선언이 아닌 실제 마샬링을 수행합니다.
.NET 마샬링 서비스는 COM OleVariants에 개체를 마샬링 할 수 있으므로이 작업을 시도했습니다. 그러나 예외가 발생합니다 : "PInvoke 제한 : 변형을 반환 할 수 없습니다.". 그래서 저는 맞춤식 마샬 러를 사용해야한다고 생각합니다.
Delphi 5 OleVariant를 .NET에서 읽을 수있는 방법으로 마샬링하는 올바른 방법은 무엇입니까?
기본 마샬링 서비스에서 System.Object를 사용하면 불행하게도 작동하지 않습니다. 이를 반영하기 위해 질문을 업데이트했습니다. – ulrikj