Я хочу, чтобы мобилизовывать двумерный массивМаршалинг двумерный массив
int [10][20] //const dimensions size
из DLL C++ в C# код. Для этого есть автоматический маршалер? Невозможно найти хорошее решение для такой простой задачи.
public int[,] _operators;
Дает неопределенные значения. Да, я могу сделать это одномерным только для маршалинга, а затем снова прочитать его до 2 dimsions в C#, но есть ли простой способ?
=================
Лучший способом я думаю, что это использование указателя, как это:
const int 1dSize = 10;
const int 2dSize = 10;
var ret = new int[1dSize, 2dSize];
unsafe
{
int* ptrOnArray = NativeLibPrototypes.Get2DArrayPtr();
for (int i1 = 0; i1 < 1dSize; i1++)
{
for (int i2 = 0; i2 < 2dSize; i2++)
{
ret[i1, i2] = *ptrOnArray;
ptrOnArray++;
}
}
}
Не работает, не определено –
, где вы получите неопределенный ?? – Sameer
Когда я смотрю в отладчике _операторы, я вижу "?" на каждом элементе _operators [0, 0] дает мне индекс вне диапазона ... (_ operator - это поле класса C++, теперь я комментирую все, кроме _операторов) –