1 目的
这么久了,第一次发博客,为什么突然要写这篇文呢,主要是最近在做一个项目,可能要通过C++来调用MATLAB程序执行。然后就网上找各种方法,搞了很久心态差点崩了,最后总算弄好了。一直以来在CSDN上面得到了许多的帮助,为了其他需要的朋友能够少走弯路,当然也是为了自己以后忘了不用在网上到处找了,就决定写下这篇文章,仅供参考。我用的是VS2019和MATLABR2018b这两个版本,亲试有效,但其他版本就不做保证了。
2 编译MATLAB程序
编译MATLAB程序之前需要设置对应的C++编译器,具体设置方法网上一搜就有,我就不多说了。
我这里有三个MATLAB文件,mycalc.m, Add.m, Cheng.m,这些.m文件要是函数形式
function [r1,r2] = mycalc(a,b)
r1 = Add(a,b);
r2 = Cheng(a,b);
end
function r = Add(a,b)
r = a+b;
end
function r = Cheng(a,b)
r = a*b;
end
编译方法:在MATLAB命令行中输入以下命令
>> mcc -W cpplib:mycalc -T link:lib mycalc.m
其中mycalc可以简单理解为文件名吧,第一个mycalc表示编译得到的文件名,第二个就是你要编译的文件名。可以看到,这条命令中只出现mycalc.m一个文件,而我总共有三个文件,不用担心,会一起编译打包的(这是我自己的理解,反正就是这样,具体原因可以自己去查,欢迎查完跟我解释)。
编译后将会得到这些文件,除了.m文件是原来的之外,其他的都是编译得到的,我们要用到的是.lib, .dll和.h这三个文件,将这三个文件放到对应的C/C++工程目录里面
3 C++调用MATLAB函数
3.1 项目平台
根据MATLAB的位数,设置对应的项目平台