我尝试使用 VS 2010 MATLAB 2012b MEX 代码段并收到此错误
c:\users\krzysztof\desktop\libocas_v096\libocas_v096\sparse_mat.h(27):错误 C2371:“mxArray”:重新定义;不同的基本类型 c:\program files\matlab\r2012b\extern\include\matrix.h(293) :参见“mxArray”的声明
代码包含#include,其中包含matrix.h
另一段代码包括sparse_mat.h,它重新定义了matrix.h类型,例如
typedef struct {
INDEX_TYPE_T *ir;
INDEX_TYPE_T *jc;
INDEX_TYPE_T m;
INDEX_TYPE_T n;
double *pr;
NNZ_TYPE_T nzmax;
int sparse;
} mxArray;
知道如何消除这个错误吗? GCC 编译此代码。
克日什托夫
它提示第 293 行。matrix.h 的下面部分包含此行
#ifndef MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H
#define MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H
/* Copyright 2008 The MathWorks, Inc. */
/**
* Published incomplete definition of mxArray
*/
typedef struct mxArray_tag mxArray; <--- line 293
#endif /* MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H */
最佳答案
尝试包含 header “mex.h”
而不是“matrix.h”
。
关于C2371 : 'mxArray' : redefinition; different basic types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14149234/