C#에서 C++ DLL을 사용하려고하며 특정 기능이있는 두 가지 문제가 있습니다.C# 응용 프로그램에서 C++ 라이브러리를 사용할 때 마샬링 오류가 발생했습니다.
기능 C++에서과 같이 정의됩니다 : C#에서 나는로 정의한
byte* GetEntityUserData(TEntity entity)
:
object[] o = LE.GetEntityUserData(entity);
: 나는 다음과 같은 사용을하려고
[DllImport(EngineDll)]
public static extern object[] GetEntityUserData(TEntity entity);
다음 오류가 발생합니다.
Cannot marshal 'return value': Invalid managed/unmanaged type combination.
C# 프로그램은 컴파일되지만 런타임 오류가 발생합니다.
C++ 선언을 void *로 변경하면 "여기에 blob of blob이 있습니다. 행운을 빕니다"라고 표시하는 것이 더 정확합니다. 관리 측의 IntPtr, 클래스를 마샬링하여 클래스를 이해할 수 있습니다. 분명히 그것은 배열이 아닙니다. –