libstruct

Преобразуйте структуру MATLAB в структуру C-стиля для использования с разделяемой библиотекой C

Синтаксис

S = libstruct(structtype)
S = libstruct(structtype,mlstruct)

Описание

S = libstruct(structtype) создает указатель NULL на объект S MATLAB® libstruct.

пример

S = libstruct(structtype,mlstruct) создает указатель, инициализированный к mlstruct.

Примеры

свернуть все

Вызовите функцию addStructFields путем создания переменной типа c_struct.

Загрузите библиотеку shrlibsample в папке matlabroot\extern\examples\shrlib, которая содержит тип c_struct.

if ~libisloaded('shrlibsample')
   addpath(fullfile(matlabroot,'extern','examples','shrlib'))
   loadlibrary('shrlibsample')
end

Отобразите функциональные подписи для shrlibsample и ищите список запись addStructFields.

libfunctionsview shrlibsample
double addStructFields(c_struct)

Входной параметр является указателем на тип данных c_struct.

Создайте структуру MATLAB, sm.

sm.p1 = 476;   sm.p2 = -299;   sm.p3 = 1000;

Создайте объект libstruct sc из типа c_struct.

sc = libstruct('c_struct',sm)

Поля sc содержат значения структуры MATLAB, sm.

Вызовите функцию addStructFields.

calllib('shrlibsample','addStructFields',sc)
ans =
    1177

Чтобы очистить, сначала очистите объект libstruct, и затем разгрузите библиотеку.

clear sc
unloadlibrary shrlibsample

Входные параметры

свернуть все

C структура задан в разделяемой библиотеке.

Структура MATLAB раньше инициализировала поля в S.

Типы данных: struct

Выходные аргументы

свернуть все

Указатель, возвращенный как объект MATLAB libstruct.

Ограничения

  • Используйте с библиотеками, которые загружаются с помощью функции loadlibrary.

  • Можно только использовать функцию libstruct на скалярных структурах.

  • При преобразовании структуры MATLAB в объект libstruct структура должна придерживаться требований, перечисленных в Требованиях Аргумента Структуры.

Советы

  • Если функция в разделяемой библиотеке имеет аргумент структуры, используйте libstruct, чтобы создать аргумент. Функция libstruct создает структуру C-стиля, которую вы передаете функциям в библиотеке. Вы обрабатываете эту структуру в MATLAB, когда вы были бы истинная структура MATLAB.

Представлено до R2006a

Была ли эта тема полезной?