Я вызываю функцию C ++ из C #.В качестве аргументов он получает указатель на массив структур.
struct A
{
int data;
}
int CFunction (A* pointerToFirstElementOfArray, int NumberOfArrayElements)
В C # я создал такую же структуру (как класс) и правильно ее маршаллю (первый элемент в массиве получен правильно),Вот мое определение C # структуры C ++:
[StructLayout(LayoutKind.Sequential), Serializable]
class A
{
int data;
}
Первый элемент прочитан правильно, поэтому я знаю, что все поля в структуре правильно распределены.Проблема возникает, когда я пытаюсь отправить массив элементов. Как мне создать массив классов, который будет в одном блоке памяти (чанке), чтобы функция C ++ могла увеличивать указатель на массив?
Полагаю, мне нужно что-топохож на stackalloc, но я верю, что это работает только для примитивных типов?
Спасибо за вашу помощь.