exponenta event banner

libstruct

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

Описание

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

пример

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 создает структуру в стиле Си, передаваемую функциям в библиотеке. Эта структура обрабатывается в MATLAB так же, как и настоящая структура MATLAB.

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