matlab调用dll的小小启发


首先matlab是支持同C的混合编程滴~

我重点研究的是如何将C用在matlab中~

调用dll技术是也~

主要有两种方法~

一种,是MEX~

C函数可大体不变~

只需一点小小的修改~

也就是MEX固定滴一些语法~

倘若是想实现矩阵的转置吧,设为change.c~

一个输入,一个输出~

又是假设:a = magic(4)~

mex指令:mex change.c~

会生成change.mexw32~

mexw32就相当于dll,只是matlab版本问题罢了~

直接b = change(a),就可得到想要结果~

对了,为何要用MEX?~

当然,主要是为了提速,当遇到特别大的循环时~

另一种,matlab自带函数,调用动态链接库dll~

先用用VC或者eclipse生成dll~

都试了,也都可行~

主要讲一下我用的eclipse吧~

新建project——>Shared Library——>Empty Project——>MinGW GCC——>finish~

添加.c和.h文件,主要有一点要注意,就是.h中必须要有这么一句~

__declspec(dllexport) double add(double x, double y);~

只是为了假设.c中有add函数~

然后编译,就会生成dll~

假设就是add.dll,和add.h一起移到matlab相应工作目录~

只需这样使用:~

loadlibrary add.dll~

libfunctions('add'),这个是为了确定add是不是加载进去了~

然后调用:calllib('add','add',5,4)

结果就是9了~

前一个add是dll,后一个add是函数~

小结一下~

以上主要就是MATLAB如何调用动态链接库dll~


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM