1 MATLAB编译器设置
需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件。在MATLAB命令行输入:mex –setup;然后继续输入:mbuild –setup,选择已安装的VC编译器。
2 将MATLAB程序编译成C/C++动态链接库
假设存在一个Add.m的文件需要编译成库文件:function C=Add(A,B) C=A+B;end
2.1 将MATLAB程序编译成C动态链接库采用mcc编译选项:>>mcc –W lib:
libname file.m –T link:lib采用捆绑命令文件:>>mcc –B csharedlib:
libname file.m2.2 将MATLAB程序编译成C++动态链接库采用mcc编译选项:>>mcc –W cpplib:
libname file.m –T link:lib采用捆绑命令文件:>>mcc –B cpplib:libname
file.m2.3 生成的文件格式成功编译会在Add.m的路径下生成一些文件:
3 创建C/C++程序调用MATLAB函数3.1 设置项目平台根据MATLAB的位数(32或64),设置相应的项目平台。
3.2 工程环境设置将前面生成的libAdd.dll、libAdd.h和libAdd.lib三个文件拷贝到新建的C++工程中,并设置工程属性。
libeng.liblibmat.liblibmex.liblibmx.libmclmcrrt.libmclmcr.liblibAdd.lib(最后这一个是Add.m生成的)
3.3 C++程序#include <iostream>#include "libAdd.h"using namespace std;int main(){if (!libAddInitialize())return -1;double a[4] = { 1,2,3,4 };double b[4] = { 1,1,1,1 };double c[4];mwArray mwA(2, 2, mxDOUBLE_CLASS);mwArray mwB(2, 2, mxDOUBLE_CLASS);mwArray mwC(2, 2, mxDOUBLE_CLASS);mwA.SetData(a, 4);mwB.SetData(b, 4);Add(1, mwC, mwA, mwB);mwC.GetData(c, 4);cout << "mwC=
" << mwC << endl;cout << "c=" << endl;for (int i=0;i<4;i++){if (i%2==0){cout<<endl;}cout<<" "<<c[i];}cout<<endl;libAddTerminate();return 0;} 输出结果: C#中调用Matlab人工神经网络算法实现手写数字识别 http://www.linuxidc.com/Linux/2016-04/130564.htmC/C++与Matlab混合编程 http://www.linuxidc.com/Linux/2016-04/130562.htmUbuntu Server上安装Matlab http://www.linuxidc.com/Linux/2014-09/106242.htmMatlab与C/C++联合编程之从Matlab调用C/C++代码 http://www.linuxidc.com/Linux/2012-08/68148.htm二分类SVM方法Matlab实现 http://www.linuxidc.com/Linux/2013-05/84050.htmMatlab中的取整函数fix, floor, ceil与round http://www.linuxidc.com/Linux/2013-10/91161.htmMatlab编译cuda的.cu文件 http://www.linuxidc.com/Linux/2014-04/100675.htmLinux Matlab服务器进一步改造成Application Server(应用程序服务器) http://www.linuxidc.com/Linux/2014-09/106340.htmMatlab 坐标图动画,动态显示数据 http://www.linuxidc.com/Linux/2016-03/129056.htmUbuntu 14.04安装Matlab2012a过程 http://www.linuxidc.com/Linux/2015-12/126297.htm
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132193.htm