C++与 MATALB 搭建混合编译环境
环境:Win10 + MATLAB 2017a
1、搭建MATLAB C++混合编程环境:
下载安装 TDM-GCC MinGW Compiler4.9.2(这个版本太难找了Md)
建议安装在系统盘C
安装不走及说明:看MATLAB2015a部分(严格按照他的说明安装)
https://blog.****.net/enjoyyl/article/details/46545263
安装完点击我的电脑(win10)-属性-高级系统设置--环境变量--系统变量中path(双击)--看C:\TDM-GCC-64\bin 是否存在(正常安装好了会自动添加)
2、测试:
参考:https://blog.****.net/enjoyyl/article/details/46545263
如下图测试成功:
混合编译测试代码:
/*hello.c*/
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{ mexPrintf("hello,world!/n");
}
////mexDemo.cpp
#include "mex.h"
//加入头文件,该头文件在VS2010中无法include,但是不影响其在matlab中的编译,反而在matlab编译还需要include它
#include <vector>
using namespace std;
void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[])
//mexFunction就类似于main函数
{
//nlhs代表的是输出参数的个数
//plhs是一个指针数组,里面的指针指向mxArray类型,每一个指针指向一个输出
//nrhs代表的是输入参数的个数
//prhs是一个指针数组,里面的指针指向mxArray类型,每一个指针指向一个输入
vector<vector<double> > array2d;
double *z;
plhs[0] = mxCreateDoubleMatrix( 5, 6, mxREAL);//第一个输出是一个5*6的矩阵
z = mxGetPr(plhs[0]);//获得矩阵的第一个元素的指针
array2d.resize(5);
int ii = 0;
for(int i = 0; i < 5; i++){
for(int j = 0; j < 6; j++){
z[i*6 + j] = ii; //指针访问矩阵是列优先的,请自己循环程序和分析输出结果
ii++;
}
}
}
------代码参考于网络,侵联系删
如有疑问,欢迎留言交流,不定期查看谢谢。
分享不易,一分一毛都是激励。
技术合作交流群:799361727