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