我怎么能调用DLL或共享库函数使用mex files代替通用DLL /共享库接口?

55视图(30天)
我不能使用LOADLIBRARY函数,要么因为CALLLIB不支持我的图书馆的一些特性,或者因为LOADLIBRARY不支持平台。金宝app因此,我想使用MEX-file调用库函数。

接受的答案

MathWorks支金宝app持团队
这种变化被纳入2009年发布的文档(R2009a)。在以前的版本中,读下面的任何额外的信息:
这是一个基本的例子,从通用调用C结构的一个例子使用墨西哥人接口DLL文件。大部分的工作是做数据转换,通常是由CALLLIB LIBPOINTER, LIBSTRUCT功能。
这个例子是配置为32位MATLAB 7.4 (R2007a)和微软Visual Studio 2005。代码将类似但编译器选项为其他配置文件将是不同的。例如,bat文件将SH-file Linux上。附加的MSVC80OPTS bat文件是修改后的版本。BAT文件附带MATLAB在以下目录:
< matlabroot > / bin / win32 / mexopts
类似的文件在其他平台上可用以下目录:
< matlabroot > / bin
c代码是平台独立的,但是它被编译成库,根据平台有不同的扩展,所以下面的两个墨西哥人命令将基于该平台需要修改。
要执行这个例子,请下载附件C -和批处理文件工作目录,并执行:
拷贝文件([matlabroot“\走读生\ \ shrlib \ shrlibsample.c例子”]);
拷贝文件([matlabroot“\走读生\ \ shrlib \ shrlibsample.h例子”]);
拷贝文件([matlabroot“\走读生\ \ shrlib \ shrhelp.h例子”]);
墨西哥人- v - g - f msvc80buildlib。蝙蝠shrlibsample.c
墨西哥人- v - g myAddStructByRef。c shrlibsample.lib
结构体。p1 = 4;结构体。p2 = 7.3;结构体。p3 = -290;
[res,圣]= myAddStructByRef(结构)
这个复制通用的DLL文件到你的工作目录,建立与所有相关的出口文件和导入库DLL (EXP -和LIB-files),然后构建MEX-file叫addStructByRef ()。最后,它调用函数测试结构。
这将产生的输出:
C结构:
p1: 4.000000
p2: 7
p3: -290
计算金额:-279.000000
res =
p1: 5.5000
p2: 1234
p3: 12345678
圣=
-279年
这个调用相同的函数用于CALLLIB文档:
目录([matlabroot“\走读生\ \ shrlib例子”])
loadlibraryshrlibsample shrlibsample.h
结构体。p1 = 4;结构体。p2 = 7.3;结构体。p3 = -290;
[res,圣]= calllib (“shrlibsample”,“addStructByRef”,
libstruct (“c_struct”、结构);

更多的答案(0)

类别

找到更多的在从MATLAB调用C帮助中心文件交换

下载188bet金宝搏


释放

R2007a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!