Народ,
Пожалуйста, помогите мне отогнать SafeArrayTypeMismatchException
, что я получаю.Мне нужно передать struct
в неуправляемую DLL.Один из struct
членов является массивом переменной длины.Неуправляемый код будет заполнять его данными, тогда мой код C # будет использовать эти данные.
Мой подход такой:
- Получить
IntPtr
для моей структуры, используя StructureToPtr()
, сделатьконечно же, выделение памяти. - Вызовите неуправляемую функцию и передайте
IntPtr
в качестве параметра - Получите заполненную структуру, используя
PtrToStructure()
Еслидля целей упражнения я называю StructureToPtr()
и PtrToStructure()
вплотную, исключений нет.
PtrToStructure()
генерирует SafeArrayTypeMismatchException
, если я помещаю вызов в неуправляемую DLL между StructureToPtr()
и PtrToStructure()
.Описание для SafeArrayTypeMismatchException
: «Произошло несоответствие между типом среды выполнения массива и подтипом, записанным в метаданных.»
Любое предложение или понимание действительно приветствуются!
Я могуопубликуйте мой код, если необходимо.
- Ник