【发布时间】:2013-01-04 00:00:23
【问题描述】:
我正在尝试使用 VS 2010 MATLAB 2012b 混合一段代码并收到此错误
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 */
【问题讨论】:
-
结构的重新定义是不合法的 C. 如果 GCC 接受了代码,那对你来说非常好。你能显示两个结构定义吗?
-
它抱怨第 293 行。matrix.h 的下面部分带有此行 ` #ifndef MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H #define MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H /* 版权所有 2008 The MathWorks, Inc. / /* *发布了 mxArray /typedef struct mxArray_tag mxArray 的不完整定义; MATHWORKS_MATRIX_MXARRAY_PUB_FWD_H */`
-
而你为什么要重新定义它?
-
我不是作者,只是发送给作者发送相同问题的电子邮件。也许重命名就足够了
-
您可以尝试从 mxArray 重命名您的结构吗?它已经定义好了。这应该可以解决您的问题。
标签: c matlab compiler-construction