使用Matrix Template Library 2和g ++ 4.7构建错误

时间:2013-07-24 20:05:37

标签: c++ compiler-errors 64-bit debian g++-4.7

几年前,我必须在我职业生涯的最终项目中使用MTL 2库(这是强制性要求)。我不得不处理现有的(而且很旧的)代码,我使用的编译器是g++ 4.4

现在,我想继续研究该项目以尝试改进它。我想使用一些C++11功能,因为Debian Wheezy附带g++ 4.7,我想我会使用它。

所以,我安装了MTL 2并尝试编译项目。但我得到一个错误,ptrdiff_t未知:

error: expected type-specifier before ‘ptrdiff_t’
error: expected ‘>’ before ‘ptrdiff_t’
error: template argument 4 is invalid

谷歌有点我发现自g++ 4.6以来标准标题中的一些内容发生了变化,我需要包含cstddef标题才能使ptrdiff_t知道(a )

因此,我将该标头包含在使用MTL 2的{​​{1}}文件中并重新编译该项目。但是,出现了一个新的错误:

ptrdiff_t

我的问题是,是否有办法将In file included from /usr/local/include/mtl/matrix.h:41:0, from /usr/local/include/mtl/mtl2lapack.h:20, from MCl_Eigen.cpp:36: /usr/local/include/mtl/envelope2D.h:72:20: error: declaration of ‘typedef struct mtl::twod_tag mtl::envelope2D<T>::dimension’ [-fpermissive] In file included from /usr/local/include/mtl/matrix_implementation.h:25:0, from /usr/local/include/mtl/matrix.h:33, from /usr/local/include/mtl/mtl2lapack.h:20, from MCl_Eigen.cpp:36: /usr/local/include/mtl/dimension.h:19:7: error: changes meaning of ‘dimension’ from ‘class mtl::dimension<typename mtl::dense1D<T>::size_type>’ [-fpermissive] make: *** [MCl_Eigen.o] Error 1 MTL 2编译器一起使用,还是更好地使用较新的版本并使代码适应它? (或使用与以前相同的编译器,g++ 4.7

(a)我将g++ 4.4标头直接包含在cstddef文件中。我应该在项目文件中完成吗?

0 个答案:

没有答案