loadlibrary

载荷C共享库进MATLAB

描述

调用LoadLibrary(LIBNAME,hfile)从C共享库加载函数LIBNAME在头文件中定义hfile到MATLAB®。的loadlibrary函数只支持从C中调用的函数,万博1manbetx以及可以由C编译器解析的头文件。用c++编写的函数必须声明为为extern “C”

例子

调用LoadLibrary(LIBNAME)如果头文件的名称与库文件的名称相同,则装入库。

例子

调用LoadLibrary(LIBNAME,hfile,名称,值)加载库与一个或多个名称,值参数。

例子

调用LoadLibrary(LIBNAME@protofile)使用原型文件,protofile,而不是头文件。

(未找到,警告] =调用LoadLibrary(___)返回警告信息,并且可以在以前的语法中包含任何输入参数。

例子

全部折叠

添加路径例子夹。

目录(fullfile (matlabroot,'EXTERN','例子',“shrlib”))

在库显示功能。

如果不是(libisloaded ('shrlibsample')loadlibrary ('shrlibsample')结束libfunctions('shrlibsample')
在库shrlibsample功能:addDoubleRef exportedDoubleValue printExportedDoubleValue addMixedTypes getListOfStrings readEnum addStructByRef multDoubleArray stringToUpper addStructFields multDoubleRef 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,'EXTERN','例子',“shrlib”))结束

创建别名LIB图书馆shrlibsample

调用LoadLibrary('shrlibsample','shrlibsample.h',“别名”,“自由”)

通话功能stringToUpper使用别名。

str =“这是一个混合大小写字符串”;calllib (“自由”,“stringToUpper”str)
ANS =“这是一个混合大小写STRING”

清理。

unloadlibraryLIB

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

目录(fullfile (matlabroot,'EXTERN','例子',“shrlib”))

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

调用LoadLibrary('shrlibsample','shrlibsample.h',“includepath”,'C:\工作')

清理。

unloadlibraryshrlibsample

这个例子说明了如何更换addMixedTypes在MATLAB函数名shrlibsample库别名,addTypes。要定义别名,请创建一个原型文件,然后使用原型文件作为头文件加载库。

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

光盘('C:\工作')

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

HFILE =完整文件(matlabroot,'EXTERN','例子',“shrlib”,'shrlibsample.h');[notfound,警告]= loadlibrary ('shrlibsample',HFILE,“mfilename”,'mxproto')

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

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

编辑mxproto.m

搜索函数addMixedTypes

下面的语句分配别名addTypes

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使用原型文件。

unloadlibraryshrlibsample调用LoadLibrary('shrlibsample'@mxproto)

通过调用它的别名功能。

calllib ('shrlibsample','addTypes'int16 (127), int32(33000),π)
ANS = 3.3130e + 04

清理。

unloadlibraryshrlibsample

输入参数

全部折叠

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

在微软®视窗®系统中,LIBNAME指的是共享库的名字(.DLL)文件。在Linux®系统中,它指的是一个共享对象的名称(。所以)文件。在苹果Mac系统,它指的是一个动态共享库(名为.dylib)。如果不包括与文件扩展名LIBNAME的说法,loadlibrary试图找到任何合适的平台MEX文件扩展名或相应的平台库扩展库。对于MEX文件扩展名的列表,使用mexext

MATLAB中提取的名称部分LIBNAME鉴定其他共享库函数库。例如,当你调用calllib功能,不包括在库参数名的路径或文件扩展名。

数据类型:烧焦

C头文件,指定为字符向量的名称。该名称是区分大小写,并且必须在系统上的文件相匹配。如果不包括在文件名的文件扩展名,loadlibrary使用。h为扩展名。

数据类型:烧焦

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

数据类型:烧焦

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。名称参数名和是对应的值。名称必须出现在引号内。可以按任意顺序指定多个名称和值对参数名1,值1,...,NameN,值N

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

头文件,指定为逗号分隔的一对组成的“addheader和一个字符向量。没有文件扩展名指定文件名。

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

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

库的可选名称,指定为逗号分隔的对,其中包含'别号和一个字符向量。将指定的名称与库关联。在卸载这个库之前,所有引用这个库的MATLAB函数的后续调用都必须使用这个别名。

多个搜索头文件内,用于从属头文件的头文件路径,指定为逗号分隔的一对组成的“includepath和一个字符向量。

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

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

输出参数

全部折叠

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

数据类型:细胞

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

限制

  • 你必须有一个支持的C编译器和Pe万博1manbetxrl必须是可用的。

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

  • loadlibrary不支持由?生成的库万博1manbetxMATLAB编译器SDK™和代码生成产品,如MATLAB编码器。s manbetx 845

  • MATLAB的共享库接口不支持函数指针输入库函数。万博1manbetx

  • 欲了解更多信息,请参阅限制共享库支持万博1manbetx

更多关于

全部折叠

原型文件

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

咚文件

thunk文件是MATLAB生成的64位库的兼容层。thunk文件的名称是BASENAME_thunk_COMPUTER.c哪里BASENAME共享库的名称或(如果指定的话)mfilename原型名称。电脑在文本由返回电脑函数。

MATLAB编译此文件,并创建文件BASENAME_thunk_COMPUTER.LIBEXT,其中LIBEXT是依赖于平台的默认共享库扩展名,例如,dll在Windows上。

提示

  • 如果你有相同名称的多个库文件,使用库文件名加载第一。然后加载使用该附加的库别号选项。

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

R2006a前推出