最近在看的代码里有一部分是matlab与c++进行混编的,借这个机会学习了一下matlab的混编方法。
众所周知,matlab强大的处理矩阵能力在面临其极慢的执行速度时往往让人十分抓狂,于是就有了matlab与C/C++等混编情况的出现了。
首先声明一下,我的matlab版本是2015b(持续更新),vs是2010(懒得换了)。不过vs的版本对于matlab混编没有影响。
matlab混编常用的命令有三个:mcc、mex、mbuild。
mcc将M文件转换成C/C++文件和相应的MEX包裹文件(需要Matlab编辑器),但在特定条件下可以自动调用mbuild或者mex。
mex将C/C++文件(入口函数为mexfunction())编译成MEX(DLL)文件(需要C/C++编辑器)。
mbuild将C/C++文件(入口函数为main())生成可独立运行的C应用程序(需要C/C++编辑器)。
对于从来没有进行过混编的matlab,要先进行配置matlab混编的环境。
mbuild -setup
mex -setup
配置结束后,我们以插值函数为例看看混编的效果。
matlab的混编有很多情况,个人“将m文件转换为库文件使用”是最简单也是最常见的一种方式。
mcc -W cpplib:my -T link:lib spline.m
-W 指定包装函数类型,cpplib是生成c++库文件;-T指定输出文件的目标阶段 link:lib是把链接文件加到共享库
得到下列文件: