几年前,我必须在我职业生涯的最终项目中使用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
文件中。我应该在项目文件中完成吗?