如何在matlab中运行C代码

How to run C codes in matlab

本文关键字:运行 代码 matlab      更新时间:2023-10-16

我想在Matlab中运行c++代码,在我的代码中,我有这个

    int max=(int)*mxGetPr(prhs[0]);
    double a[max];

但是当我使用mex时,它有这些错误

错误C2057:期望的常量表达式
错误C2466:不能分配一个常量大小为0的数组
'a':未知大小

全部用于第2行,并且我只得到这个文件的错误,(我可以添加示例代码)
知道我该怎么修吗?

问题是max不是一个常量表达式(或者,至少,没有标记为常量)。要使第二行正常工作,必须将max设置为常量,因为在执行之前必须知道数组的内存占用(数组在堆栈上分配)。如果你不知道尺寸,你需要使用类似的东西

double *a = mxCalloc(max, sizeof(double));

然后在堆上分配一块内存,允许使用动态大小