Main Content

libstruct

MATLAB 结构体转换为 C 样式的结构体以用于 C 共享库

说明

S = libstruct(structtype) 创建指向 MATLAB® libstruct 对象 SNULL 指针。

示例

S = libstruct(structtype,mlstruct) 创建初始化为 mlstruct 的指针。

示例

全部折叠

通过创建 c_struct 类型的变量来调用 addStructFields 函数。

加载 matlabroot\extern\examples\shrlib 文件夹中的 shrlibsample 库,其中包含 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;

c_struct 类型构造 libstruct 对象 sc

sc = libstruct('c_struct',sm)

sc 的字段包含 MATLAB 结构体 sm 的值。

调用 addStructFields 函数。

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

要进行清理,请首先清除 libstruct 对象,然后卸载库。

clear sc
unloadlibrary shrlibsample

输入参数

全部折叠

共享库中定义的 C 结构体。

用于初始化 S 中的字段的 MATLAB 结构体。

数据类型: struct

输出参数

全部折叠

指针,以 MATLAB libstruct 对象形式返回。

局限性

  • 用于使用 loadlibrary 函数加载的库。

  • 只能对标量结构体使用 libstruct 函数。

  • 当将 MATLAB 结构体转换为 libstruct 对象时,该结构体必须遵从 Structure Argument Requirements 中列出的要求。

提示

  • 如果共享库中的函数具有结构体参数,请使用 libstruct 创建该参数。libstruct 函数创建 C 样式的结构体,可将该结构体传递到库中的函数。在 MATLAB 中处理此结构体的方式与处理真实 MATLAB 结构体的方式一样。

版本历史记录

在 R2006a 之前推出