Я пытаюсь найти решение, как передать массив массивов из C # в нативную функцию. У меня уже есть делегат функции (Marshal.GetDelegateForFunctionPointer), но теперь я пытаюсь передать в него многомерный массив (точнее, массив массивов).
Этот пример кода работает, когда на входе 2 подмассивы, но мне нужно иметь возможность обрабатывать любое количество подмассивов. Какой самый простой способ сделать это? Я бы предпочел не копировать данные между массивами, так как это будет происходить в цикле реального времени (я общаюсь с помощью звукового эффекта)
public void process(float[][] input)
{
unsafe
{
// If I know how many sub-arrays I have I can just fix them like this... but I need to handle n-many arrays
fixed (float* inp0 = input[0], inp1 = input[1] )
{
// Create the pointer array and put the pointers to input[0] and input[1] into it
float*[] inputArray = new float*[2];
inputArray[0] = inp0;
inputArray[1] = inp1;
fixed(float** inputPtr = inputArray)
{
// C function signature is someFuction(float** input, int numberOfChannels, int length)
functionDelegate(inputPtr, 2, input[0].length);
}
}
}
}