Main Content

calllib

调用 C 共享库中的函数

说明

示例

[x1,...,xN] = calllib(libname,funcname,arg1,...,argN) 调用 C 库 libname 中的函数 funcname,从而传递输入参数 arg1,...,argNcalllib 函数返回从 x1,...,xN 中的 funcname 获得的输出值。

示例

全部折叠

加载库。

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

显示函数签名。

libfunctionsview shrlibsample
[double, c_structPtr] addStructByRef(c_structPtr)

输入参数是指向 c_struct 数据类型的指针。

创建 MATLAB® 结构体 struct

struct.p1 = 4; struct.p2 = 7.3; struct.p3 = -290; 

调用函数。

[res,st] = calllib('shrlibsample','addStructByRef',struct);

显示结果。

res
res =
         -279

清空库。

unloadlibrary shrlibsample

输入参数

全部折叠

共享库的名称,指定为字符向量。请勿在 libname 中包括路径或文件扩展名。

如果使用 alias 选项调用 loadlibrary,则 libname 参数使用别名。

数据类型: char

库中函数的名称,指定为字符向量。

数据类型: char

funcname(如果有)所需的输入参数(1 至 N),由任意类型指定。funcname 参数列表指定参数类型。

输出参数

全部折叠

funcname(如果有)的输出参数(1 至 N),作为任意类型返回。funcname 参数列表指定参数类型。

局限性

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

提示

  • MATLAB 在调用 funcname 之前验证输入参数类型。如果 MATLAB 显示与数据类型有关的错误消息,请检查 MATLAB 函数签名。例如,如果 funcname 为库 mylib 类型:

    libfunctions('mylib','-full')

    要查找 funcname,请滚动浏览输出。有关详细信息,请参阅库文档。

    调用 funcname 时,该函数可能显示错误。有关错误消息的信息,请参阅库文档。

版本历史记录

在 R2006a 之前推出