libstruct

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

Описание

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

пример

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

Примеры

свернуть все

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

Загрузите shrlibsample библиотека в matlabroot\ extern\примеры\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 для создания аргумента. The libstruct функция создает структуру C-стиля, которая передается функциям в библиотеке. Вы обрабатываете эту структуру в MATLAB, так как вы будете истинной структурой MATLAB.

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