Я использую API, написанный на C ++ в моем коде (пишу на C #). API требует параметр как указатель на структуру. Структура состоит из массивов Int и Char: например
unsafe public struct ToBePassed
{
Int32 Num1;
Int32 Num2;
Char[] Data; // or fixed Char Data[255];
}
Я не могу напрямую передать указатель структуры в API, потому что в этом случае я получаю сообщение об ошибке: «Указатели не могут ссылаться на структуры с маршалированием». Код успешно компилируется, но эта ошибка возникает, когда я выполняю (отлаживаю) код.
Теперь у меня есть два варианта: 1-й: - Передача структуры по ссылке: я хочу спросить, может ли API, требующий указателя структуры, получить адрес, когда я передаю структуру по ссылке. Обратите внимание, что API вернет данные в "Char [] Data".
2-й: - Использование Marshal.StructureToPtr: это преобразует указатель структуры в IntPtr. Опять же, сомнение то же самое, получит ли этот API его правильно?
Спасибо за ваше время!
С уважением, Swanand