我试着去MEX一段代码与VS 2010 MATLAB 2012B和收到此错误C2371:'mxArray':重新定义;不同的基本类型
C:\用户\克日什托夫·\桌面\ libocas_v096 \ libocas_v096 \ sparse_mat.h(27):错误C2371:“mxArray ':重新定义;不同的基本类型 C:\程序文件\ MATLAB \ r2012b \的extern \包括\ 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 */
重新定义结构不合法C.如果GCC接受代码,那对你来说相当好。你能展示两个结构定义吗? –
它抱怨这一行'的#ifndef MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H 的#define MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H /*版权所有2008 MathWorks公司的*/ /** * 不全发布mxArray 的定义行293.下面部分来自matrix.h */ typedef struct mxArray_tag mxArray; <--- line 293 #endif/* MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H * /' – user1944066
为什么要重新定义它? –