How to get rid of error C2601?

Asked by Amit Kalhapure on 21 Jul 2012
Latest activity Commented on by Walter Roberson on 22 Jul 2012

I'm encountering few errors listed below. This happens when I try to run cpp code in matlab using mex command.

mesh.cpp(463) : error C2061: syntax error : identifier 'mxArray'
mesh.cpp(466) : error C2601: 'main' : local function definitions are illegal 
        mesh.cpp(464): this line contains a '{' which has not yet been matched 

I'm doing it this way

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{
      int main(void)
      { 
        <program content>
      }
      return;
  }

Is this the right way of doing it?

Thanks in advance

0 Comments

Amit Kalhapure

Tags

Products

No products are associated with this question.

1 Answer

Answer by Walter Roberson on 22 Jul 2012
Edited by Walter Roberson on 22 Jul 2012
Accepted answer

Are you trying to use lcc to compile your .cpp ? lcc is strictly a C compiler that cannot be used for C++ at all. lcc also only supports the 1989 C standard and not any C introduced after that.

Also, you should not have a routine named "main": MATLAB itself is effectively the main routine. "main" is used strictly to designate the first routine called for an application, and is not used to designate routines called as library functions.

The structure should look similar to

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{
  <program content>
  return;
}

2 Comments

Amit Kalhapure on 22 Jul 2012

Walter: Yes it worked. Actually I had a main cpp file and other mutilple cpp files linked to it. I didn't know that we should run all the files with 'mex'. I was trying only main cpp file.

Thanks again.

Walter Roberson on 22 Jul 2012

The problem with "const" went away when you removed the nested function?

Walter Roberson

Contact us