2011-06-13 2 views
4

Я пытаюсь маршалировать 2D C# jagged массив (double[][] jaggedArray) в C++ dll, где я определил принимающую переменную как double**.Marshalling C# Jagged Array to C++

Однако я получаю сообщение:

Там нет поддержки сортировочной для вложенных массивов.

Недостаточно сплющивания зубчатого массива есть способ использовать зубчатые массивы из C# в C++ dll?

ответ

2

Используя низкоуровневые методы класса маршала, можно маршалировать любой тип в неуправляемую память. Например, для каждого массива double [] в jaggedArray выделяйте неуправляемый блок памяти с помощью Marshal.AllocHGlobal и скопируйте его в массив с помощью метода Marshal.Copy Method (Double [], Int32, IntPtr, Int32). AllocHGlobal возвращает тип IntPtr, который может быть передан методу C++ как poiner, double * в этом случае.