C++与 MATALB 搭建混合编译环境

环境:Win10 + MATLAB 2017a

1、搭建MATLAB C++混合编程环境:

下载安装 TDM-GCC MinGW Compiler4.9.2(这个版本太难找了Md)

https://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1309.0/tdm64-gcc-4.9.2.exe/download?use_mirror=jaist

建议安装在系统盘C

安装不走及说明:看MATLAB2015a部分(严格按照他的说明安装)

https://blog.csdn.net/enjoyyl/article/details/46545263

安装完点击我的电脑(win10)-属性-高级系统设置--环境变量--系统变量中path(双击)--看C:\TDM-GCC-64\bin 是否存在(正常安装好了会自动添加)

2、测试:

参考:https://blog.csdn.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

猜你喜欢

转载自blog.csdn.net/qq_40025335/article/details/80977792