首先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~