如何在matlab中运行C代码

时间:2014-07-29 19:19:47

标签: c++ matlab mex

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

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

但是当我使用mex时会出现这些错误

错误C2057:预期的常量表达
错误C2466:无法分配常量大小为0的数组 'a':未知大小

全部为第2行,我只收到此文件的错误,(我可以使用mex示例代码)
我知道如何解决它吗?

1 个答案:

答案 0 :(得分:1)

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

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

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