Когда вы передаете MATLAB® структура функции внешней библиотеки:
Каждое имя поля MATLAB должно совпадать с именем поля в определении структуры библиотеки. Имена полей зависят от регистра.
Структуры MATLAB не могут содержать поля, не входящие в определение структуры библиотеки.
Если структура MATLAB содержит меньше полей, чем определено в структуре библиотеки, MATLAB устанавливает неопределенные поля в нуль.
Вам не нужно совпадать с типами данных числовых полей. calllib
функция преобразуется в правильный числовой тип.
Для определения имени и типа данных структурных полей можно:
Обратитесь к документации библиотеки.
Проверьте определение структуры в заголовочном файле библиотеки.
Используйте libstruct
функция.
MATLAB автоматически преобразует структуру в определение библиотеки для этого типа структуры. В большинстве случаев, таких как работа с маленькими структурами, это работает нормально.
Однако при работе с повторными вызовами, которые проходят через большие структуры, преобразуйте структуру вручную перед выполнением любых вызовов во внешние функции. Вы сохраняете время вычислений путем преобразования данных структуры только один раз в начале, а не при каждом вызове функции. Можно также сохранить память, если поля преобразованной структуры занимают меньше пространства, чем исходная структура MATLAB.
Для преобразования вручную вызовите libstruct
функция для создания libstruct object. Несмотря на то, что это объект, он ведет себя как структура MATLAB. Поля объекта получают из внешнего типа структуры.