主要内容

loadlibrary

将C Shared Library加载到马铃薯

描述

loadlibrary(libname.hfile从C共享库加载函数libname.在标题文件中定义hfile进入matlab.®.的loadlibraryfunction只支持调用可金宝app从C语言调用的函数和可由C编译器解析的头文件。用c++编写的函数必须声明为extern“c”.或者,要调用c++库中的函数,请参见Matlab中的C ++库

例子

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

例子

loadlibrary(libname.hfile名称,值用一个或多个加载库名称,值论点。

例子

loadlibrary(libname.@原样用A.原型文件原样,而不是头文件。

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

例子

全部折叠

添加路径例子文件夹。

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

在库中显示功能。

如果不是(libisloaded ('shllibsample') loadlibrary ('shllibsample'结束libfunctions('shllibsample'
函数在图书馆shllibsample:adddoubleref exporteddoublevalue printexporteddoublevalue addmixedtypes getlistofstrings readenum addstructByRef Multdoublearray StringTouroupper Addstructiffields MultidoubleFleref AllocateTructurebort Deallocattruct Print2darray

清理。

unloadlibraryshrlibsample

假设你有一个图书馆,Mylib.,带头文件,mylib.h..头文件包含以下语句:# include header2.h.中定义的函数header2.h,叫loadlibrary与之addheader选项。

loadlibrary('mylib''mylib.h''Addheader'“header2”
如果libisloaded ('shllibsample')卸载限制('shllibsample'其他的目录(fullfile (matlabroot,'extern''例子'“shrlib”))结束

创建别名lib对于图书馆shrlibsample

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

呼叫功能stringtoupper使用别名名称。

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

清理。

unloadlibrarylib

添加路径到包含shrlibsample及其头文件,Shrlibsample.h.

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

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

loadlibrary('shllibsample''shrlibsample.h'“includepath”'C:\工作'

清理。

unloadlibraryshrlibsample

此示例显示如何更换addMixedTypesMATLAB中的功能名称shrlibsample图书馆名称,addtypes..为了定义别名,创建一个原型文件,然后使用原型文件作为头文件加载库。

使用您具有写入权限的文件夹。

光盘('C:\工作'

创建原型文件,mxproto.m.

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

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

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

编辑mxproto.m.

搜索函数addMixedTypes

下面的语句分配别名addtypes.

fcns.alias {fcnNum} = ' addtype ';

将语句添加到语句之前的行,以增量Fcnnum..新的函数原型(新语句用粗体显示)如下所示:

% double 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使用prototype文件。

unloadlibraryshrlibsampleloadlibrary('shllibsample'@mxproto)

通过其别名名称调用函数。

calllib ('shllibsample''addtypes'int16 (127), int32(33000),π)
ans = 3.3130e + 04

清理。

unloadlibraryshrlibsample

输入参数

全部折叠

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

关于微软®视窗®系统中,libname.指共享库的名称(.dll.)文件。在Linux上®系统,它指的是共享对象的名称(。所以)文件。在苹果Mac系统,它引用一个动态共享库(。丁基)。如果您不包含文件扩展名libname.争论,loadlibrary尝试使用适当的平台MEX文件扩展或相应的平台库扩展名找到库。有关MEX文件扩展名单,请使用Mexext.

matlab提取名称部分libname.识别其他共享库函数中的库。例如,当你打电话时Calllib.函数,不包括库参数名中的路径或文件扩展名。

数据类型:char

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

数据类型:char

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

数据类型:char

名称-值对的观点

指定可选的逗号分隔对名称,值论点。名称参数名和价值是相应的价值。名称必须出现在引号内。您可以按如下顺序指定几个名称和值对参数name1,value1,...,namen,valuen

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

标题文件,指定为逗号分隔的配对组成addheader'和字符向量。在没有文件扩展名的情况下指定文件名。

每个文件指定addheader必须有对应的# include语句。为了只加载头文件中定义的函数,你想在MATLAB中使用,使用addheader

MATLAB不会验证Header文件的存在并忽略不需要的任何内容。

库的另一个名称,指定为逗号分隔的对,由'别名'和字符向量。将指定的名称与库关联。所有引用这个库的MATLAB函数的后续调用都必须使用这个别名,直到库被卸载。

在标题文件中的从属标题文件标头文件的更多搜索路径,指定为由“逗号分隔的对”includepath'和字符向量。

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

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

输出参数

全部折叠

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

数据类型:细胞

处理标题文件时生成的警告,返回为字符数组。

限制

  • 您必须拥有支持的C编译器,并且必金宝app须使用Perl。

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

  • loadlibrary不支持由金宝appMATLAB编译器SDK™和代码生成产品,如matlab编码器。下载188bet金宝搏

  • MATLAB共享库接口不支持具有功能指针输入的库函数。金宝app

  • 有关更多信息,请参阅对共享库支持的限制金宝app

更多关于

全部折叠

原型文件

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

thunk文件

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

matlab编译此文件并创建文件basename_thunk_computer.libext., 在哪里LIBEXT例如,平台依赖默认的共享库扩展名,dll在Windows上。

尖端

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

  • 使用别名选项作为库的替代名称。要加载另一个头文件,请使用@原样争论。

在R2006A之前介绍