C++ 使用G+构建问题+;关于MATLAB
我对MATLAB有点陌生,但目前正在尝试使用G++(版本6.3)作为编译器构建MEX文件。我犯了这个错误C++ 使用G+构建问题+;关于MATLAB,c++,matlab,mex,C++,Matlab,Mex,我对MATLAB有点陌生,但目前正在尝试使用G++(版本6.3)作为编译器构建MEX文件。我犯了这个错误 MEX completed successfully. Building with 'g++'. Error using mex /disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:14:13: error: conflicting declaration ‘typedef int mwSize’ In file included f
MEX completed successfully.
Building with 'g++'.
Error using mex
/disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:14:13: error: conflicting declaration ‘typedef
int mwSize’
In file included from /usr/local/MATLAB/R2016a/extern/include/matrix.h:25:0,
from /usr/local/MATLAB/R2016a/extern/include/mex.h:51,
from /disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:9:
/usr/local/MATLAB/R2016a/extern/include/tmwtypes.h:795:19: error: ‘mwSize’ has a previous
declaration as ‘typedef size_t mwSize’
/disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:15:13: error: conflicting declaration ‘typedef
int mwIndex’
In file included from /usr/local/MATLAB/R2016a/extern/include/matrix.h:25:0,
from /usr/local/MATLAB/R2016a/extern/include/mex.h:51,
from /disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:9:
/usr/local/MATLAB/R2016a/extern/include/tmwtypes.h:796:19: error: ‘mwIndex’ has a previous
declaration as ‘typedef size_t mwIndex’
Error in make_mex (line 20)
mex ./external/libtrws/trwsMex.cpp -largeArrayDims CXXFLAGS="\$CXXFLAGS -std=c++0x -fpermissive"
-outdir build
我不明白。为什么/usr/local/MATLAB/R2016a/extern/include/tmwtypes.h
的定义与/usr/local/MATLAB/R2016a/extern/include/mex.h
冲突?它们不是MATLAB附带的预定义库吗(这意味着它们应该可以正常工作?)
顺便说一下,
/disks/local/sceneflow2//external/libtrws/trwsMex.cpp
有一行,其中包括前面提到的mex.h
错误消息必须阻塞(对于两个不同的错误),让我们只看第一个。我把它分成三行:
第一行表示编译器在trwsMex.cpp
文件的第14行找到了mwSize
的声明,其中显示typedef int mwSize
最后一行说,这个mwSize
已经在MATLAB附带的tmwtypes.h
标题中定义
第二行表示此头文件包含在matrix.h
中,该头文件包含在mex.h
中,该头文件包含在第9行的trwsMex.cpp
中
因此,为了修复错误,不要在MEX文件源代码中定义
mwSize
和mwIndex
,它们是由MATLAB的头文件定义的。错误消息必须是块(对于两个不同的错误),让我们只看第一个错误。我把它分成三行:
第一行表示编译器在trwsMex.cpp
文件的第14行找到了mwSize
的声明,其中显示typedef int mwSize
最后一行说,这个mwSize
已经在MATLAB附带的tmwtypes.h
标题中定义
第二行表示此头文件包含在matrix.h
中,该头文件包含在mex.h
中,该头文件包含在第9行的trwsMex.cpp
中
因此,为了修复错误,不要在MEX文件源代码中定义
mwSize
和mwIndex
,它们是由MATLAB的标题定义的
/disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:14:13: error: conflicting declaration
‘typedef int mwSize’
In file included from /usr/local/MATLAB/R2016a/extern/include/matrix.h:25:0,
from /usr/local/MATLAB/R2016a/extern/include/mex.h:51,
from /disks/local/sceneflow2/./external/libtrws/trwsMex.cpp:9:
/usr/local/MATLAB/R2016a/extern/include/tmwtypes.h:795:19: error: ‘mwSize’ has a previous
declaration as ‘typedef size_t mwSize’