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