Передача структуры в C ++ API с использованием Marshal.StructureToPtr в C #

Я использую 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

15
задан E-rich 26 June 2014 в 19:06
поделиться