Приведение типов С и C#. Cannot marshal 'return value': Invalid managed/unmanaged type

Вызываю из C# API библиотеки, к которой есть main.h В указанном файле функция описана как

typedef struct { void *data; long long len; long long cap; } GSlice;

//printKeys :
extern __declspec(dllexport) GSlice printKeys(char* page, long long PerPage);

вызываю из C# так:

public struct GSlice
{
   public object data;
   public long len;
   public long cap;
}

[DllImport("wrapper", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
private static extern GSlice[] printKeys(byte[] page, int perPage);

static void Main()
{
    int keyPerPage = 1000;
    string pageNumber = "1";
    GSlice[] Keys = new GSlice[keyPerPage];
    Keys = printKeys(Encoding.UTF8.GetBytes(pageNumber),keyPerPage);
    Console.WriteLine(Keys.Length);
}

На выходе без вызова Exception получаю:

Cannot marshal 'return value': Invalid managed/unmanaged type combination.

Что я делаю не так?


Ответы (0 шт):