gpt4 book ai didi

c++ - c++ matlab代码上的奇怪错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:23:46 24 4
gpt4 key购买 nike

这是我的部分代码:

double h;
double sigma;

/* The gateway function */
void mexFunction( int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
double *nor;
int n = mxGetScalar(prhs[0]);
h = mxGetScalar(prhs[1]);
nor = mxGetPr(prhs[2]);
sigma = mxGetScalar(prhs[3]);

double *x;

/* create the output vector */
plhs[0] = mxCreateDoubleMatrix(1,n,mxREAL);

/* get a pointer to the real data in the output matrix*/
x = mxGetPr(plhs[0]);

/* call the computational routine */
createTRR(x,n,nor);
}

如果我尝试在 matlab 中使用 mex myfilename.c 编译它,我会收到以下错误:

  1. 错误 C2143:语法错误:缺少“;”在“类型”之前(在这一行中:double *x;)
  2. 错误 C2065:“x”:未声明的标识符(在这一行 x = mxGetPr(plhs[0]);)和
  3. 错误 C2065:“x”:未声明的标识符(在这一行 createTRR(x,n,nor);)

我看不出有什么问题,而且我也不明白为什么 *nor 没有抛出错误而只有 *x 抛出错误。我在 ubuntu 上用 Matlab2012 编写了代码并且它有效。现在我目前在 Win7 上使用 Matlab 2013b 和 Microsoft 软件开发工具包 (SDK) 7.1 作为 C++ 编译器。

最佳答案

您的代码是 C++ 而不是严格的 c:您声明变量 x 函数代码的开头。您可能还记得,在 C 语言中,您必须在函数代码之前声明所有局部变量。

将您的文件扩展名更改为 cpp 并重新 mex。

关于c++ - c++ matlab代码上的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22236252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com