Маршал C ++ массив структур в C #

У меня есть следующая структура в C ++:

#define MAXCHARS 15

typedef struct 
{
    char data[MAXCHARS];
    int prob[MAXCHARS];
} LPRData;

И функция, которую яm p / вызывает для получения массива из 3 из этих структур:

void GetData(LPRData *data);

В C ++ я бы просто сделал что-то вроде этого:

LPRData *Results;
Results = (LPRData *)malloc(MAXRESULTS*sizeof(LPRData));
GetData( Results );

И это будет работать нормально, но в C # я могуКажется, чтобы заставить его работать. Я'мы создали структуру C # следующим образом:

public struct LPRData
{

    /// char[15]
    [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 15)]
    public string data;

    /// int[15]
    [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 15)]
    public int[] prob;
}

И если я инициализирую массив из 3 из них (и все их подмассивы) и передам его в это:

GetData(LPRData[] data);

Он возвращается с успехом, но данные в массиве LPRData не изменились.

мы даже пытались создать необработанный байтовый массив размером 3 LPRData 's и передайте это в прототип функции следующим образом:

GetData (byte [] data);

Но в этом случае я получуданные" строка из самой первой структуры LPRData, но ничего после нее, включая "проб» массив из тех же LPRData.

Есть идеи, как правильно с этим справиться?

Ответы на вопрос(5)

Ваш ответ на вопрос