Представляйте аргументы структуры в C разделяемые библиотечные функции

Требования аргумента структуры

Когда вы передаете MATLAB® структура к внешней библиотечной функции:

  • Каждое имя поля MATLAB должно совпадать с именем поля в определении структуры библиотеки. Имена полей являются чувствительными к регистру.

  • Структуры MATLAB не могут содержать поля, которые не находятся в определении структуры библиотеки.

  • Если структура MATLAB содержит меньше полей, чем заданный в структуре библиотеки, MATLAB обнуляет неопределенные поля.

Вы не должны совпадать с типами данных числовых полей. calllib функция преобразует в правильный числовой тип.

Нахождение имен полей структуры

Чтобы определить имя и тип данных полей структуры, вы можете:

  • Консультируйтесь с документацией библиотеки.

  • Посмотрите на определение структуры в заголовочном файле библиотеки.

  • Используйте libstruct функция.

Стратегии передающих структур

MATLAB автоматически преобразует структуру в определение библиотеки для того типа структуры. Для большинства случаев, таких как работа с маленькими структурами, это хорошо работает.

Однако при работе с повторными вызовами, которые передают большие структуры, преобразуйте структуру вручную прежде, чем выполнить любые вызовы к внешним функциям. Вы сохраняете время вычислений путем преобразования данных о структуре только однажды в запуске, а не в каждом вызове функции. Можно также сохранить память, если поля конвертированной структуры занимают меньше места, чем исходная структура MATLAB.

Чтобы преобразовать вручную, вызовите libstruct функция, чтобы создать libstruct object. Несмотря на то, что это - объект, это ведет себя как структура MATLAB. Поля объекта выведены из внешне заданного типа структуры.

Смотрите также

Связанные примеры

Больше о