主要内容

loadlibrary

载入C共享库MATLAB

描述

loadlibrary (库名hfile从C共享库加载函数库名在头文件中定义hfile在MATLAB®.的loadlibraryfunction只支持调用可从C调用的函数和可由C编译器解析的头文件。用c++编写的函数必须声明为外来的“C”.或者,在c++库中调用函数,请参见从MATLAB中调用c++

例子

loadlibrary (库名如果头文件的名称与库文件的名称相同,则加载库。

例子

loadlibrary (库名hfile名称,值用一个或多个装载库名称,值参数。

例子

loadlibrary (库名,@protofile使用一个原型文件protofile,以代替头文件。

notfound警告) = loadlibrary (___返回警告信息,并且可以包括以前语法中的任何输入参数。

例子

全部折叠

添加路径例子文件夹中。

目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))

在库中显示函数。

如果不是(libisloaded (“shrlibsample”) loadlibrary (“shrlibsample”结束libfunctions (“shrlibsample”
函数在库shrlibsample: addDoubleRef exportedDoubleValue printExportedDoubleValue addMixedTypes getListOfStrings readEnum addStructByRef multidoublearray stringToUpper addStructFields multidoubleref allocateStruct multiplyShort deallocateStruct print2darray

清理。

unloadlibraryshrlibsample

假设你有一个图书馆,mylib,加上头文件,mylib.h.头文件包含以下语句:# include header2.h.中定义的函数header2.h,叫loadlibraryaddheader选择。

loadlibrary (“mylib”“mylib.h”“addheader”“header2”
如果libisloaded (“shrlibsample”) unloadlibrary (“shrlibsample”其他的目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))结束

创建别名自由为图书馆shrlibsample

loadlibrary (“shrlibsample”“shrlibsample.h”“别名”“自由”

调用函数stringToUpper使用别名。

str ='这是一个混合病例字符串';calllib (“自由”“stringToUpper”str)
ans = '这是一个混合大小写字符串'

清理。

unloadlibrary自由

添加路径到文件夹包含shrlibsample它的头文件,shrlibsample.h

目录(fullfile (matlabroot,“外来的”“例子”“shrlib”))

shrlibsample.h头文件包括头文件,shrhelp.h.如果shrhelp.h在另一个文件夹中,例如,c: \工作,可以使用“includepath”选项告诉MATLAB在哪里找到该文件。

loadlibrary (“shrlibsample”“shrlibsample.h”“includepath”“c: \工作”

清理。

unloadlibraryshrlibsample

该示例演示如何替换addMixedTypes函数名shrlibsample库的别名,addtype.要定义别名,创建一个原型文件,然后使用原型文件作为头文件加载库。

使用具有写访问权限的文件夹。

cd (“c: \工作”

创建一个原型文件,mxproto.m

hfile = fullfile (matlabroot,“外来的”“例子”“shrlib”“shrlibsample.h”);[notfound,警告]= loadlibrary (“shrlibsample”hfile,“mfilename”“mxproto”

MATLAB在当前文件夹中创建原型文件。忽略警告消息。

将别名添加到原型文件中。在MATLAB编辑器中打开文件。

编辑mxproto.m

搜索函数addMixedTypes

下面的语句分配别名addtype

fcns.alias {fcnNum} = ' addtype ';

将语句添加到要增加的语句之前的行fcnNum.新的函数原型,带有粗体显示的新语句,看起来如下所示:

addMixedTypes (short, int, double);fcns.thunkname {fcnNum} = ' doubleint16int32doubleThunk ';fcns.name {fcnNum} = ' addMixedTypes ';fcns.calltype {fcnNum} =“铛”;fcns.LHS {fcnNum} = '双层';fcns。RHS {fcnNum} = {int16, int32,“双”};fcns.alias {fcnNum} = ' addtype ';%定义别名fcnNum = fcnNum + 1;%增加fcnNum

重新加载shrlibsample使用原型文件。

unloadlibraryshrlibsampleloadlibrary (“shrlibsample”@mxproto)

通过函数的别名调用函数。

calllib (“shrlibsample”“addtype”int16 (127), int32(33000),π)
ans = 3.3130 e + 04

清理。

unloadlibraryshrlibsample

输入参数

全部折叠

共享库的名称,指定为字符向量。名称区分大小写,必须与系统上的文件匹配。

在微软®窗户®系统中,库名引用共享库的名称(. dll)文件。在Linux上®系统,它指的是共享对象的名称(所以)文件。在苹果Mac系统,它指的是一个动态共享库(. dylib).的文件扩展名中没有包含文件扩展名库名参数,loadlibrary尝试查找具有适当平台mex文件扩展名或适当平台库扩展名的库。对于mex文件扩展名列表,请使用mexext

的名称部分库名识别其他共享库函数中的库。例如,当您调用calllib函数中,不要在库参数名中包含路径或文件扩展名。

数据类型:字符

C头文件的名称,指定为字符向量。名称区分大小写,必须与系统上的文件匹配。如果在文件名中不包含文件扩展名,loadlibrary使用.h的扩展。

数据类型:字符

的名字原型文件,指定为字符向量。名称区分大小写,必须与系统上的文件匹配。@protofile指定原型文件的函数句柄。当使用原型文件时,唯一有效的名称,值两人的论点是别名

数据类型:字符

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:loadlibrary(‘mylib’,‘mylib.h’,‘addheader’,‘header2’)

头文件,指定为逗号分隔的一对,由'addheader和一个字符向量。指定不带文件扩展名的文件名。

指定的每个文件addheader必须有相应的# include基头文件中的语句。若要仅加载您想在MATLAB中使用的头文件中定义的函数,请使用addheader

MATLAB不验证头文件的存在性,并忽略任何不需要的头文件。

库的可选名称,指定为由'别名和一个字符向量。将指定的名称与库关联。所有引用此库的MATLAB函数的后续调用都必须使用此别名,直到卸载该库为止。

下级头文件的更多搜索路径——头文件中的头文件,指定为逗号分隔的对,由'includepath和一个字符向量。

原型文件,指定为逗号分隔的一对,由'mfilename和一个字符向量。生成一个原型当前文件夹中的文件。原型文件名不能与库名称相同。在加载库时,使用此文件代替头文件。

Thunk文件,指定为逗号分隔的对,由'thunkfilename和一个字符向量。覆盖默认的铛文件的名字。

输出参数

全部折叠

在头文件中找到但从库中丢失的函数名称,作为单元格数组返回。

数据类型:细胞

处理头文件时产生的警告,作为字符数组返回。

限制

  • 您必须有一个受支持的C编译器,并且必须有Perl可用。

  • 不叫loadlibrary如果库已经在内存中。要测试此条件,请调用libisloaded

  • loadlibrary方法生成的库不支持MATLAB编译器SDK™以及MATLAB Coder等代码生成产2022世界杯八强谁会赢?品。

  • MATLAB共享库接口不支持带函数指针输入的库函数。

  • 有关更多信息,请参见共享库支持的限制

更多关于

全部折叠

原型文件

原型文件是一个MATLAB命令文件,您可以修改和使用它来代替头文件。

铛文件

thunk文件是由MATLAB生成的64位库的兼容层。坦克文件的名称是BASENAME_thunk_COMPUTER.c在哪里BASENAME是共享库的名称,如果指定了,则是mfilename原型的名字。电脑返回的文本是否电脑函数。

MATLAB编译该文件并创建该文件BASENAME_thunk_COMPUTER。LIBEXT,在那里LIBEXT是平台相关的默认共享库扩展名,例如,dll在Windows上。

提示

  • 如果有多个相同名称的库文件,则使用库文件名加载第一个库文件。方法加载附加库别名选择。

  • 使用别名选项作为库的备用名称。要加载另一个头文件,请使用@protofile论点。

版本历史

之前介绍过的R2006a

Baidu
map