C ++ MTL Library dimension.h bug?

时间:2010-05-11 17:15:23

标签: c++ compilation declaration

我在我的Fedora Core 12 x64系统上安装了MTL,但在构建应用程序时出现以下错误:

In file included from /usr/local/include/mtl/matrix.h:41,
                 from /usr/local/include/mtl/mtl.h:40,
                 from ltiSystem.hxx:4,
                 from strTools.hxx:4,
                 from ff.cxx:3:
/usr/local/include/mtl/envelope2D.h:72: error: declaration of ‘typedef struct mtl::twod_tag mtl::envelope2D<T>::dimension’
/usr/local/include/mtl/dimension.h:19: error: changes meaning of ‘dimension’ from ‘class mtl::dimension<typename mtl::dense1D<T, 0>::size_type, 0, 0>’
make[1]: *** [ff.o] Error 1

这意味着MTL中存在错误。我已经改为不同的MTL版本并且问题仍然存在,但在Google上没有正确的答案。 我使用的是g ++编译器。

有没有人有clye?

3 个答案:

答案 0 :(得分:0)

问题在于您的代码,几乎百分百保证。

查找带尺寸的含糊不清的声明,即 typedef mtl::envelope2D<T>::dimension dimension

答案 1 :(得分:0)

嗯,我也是这么想的,但是与MTL捆绑的测试套件也会发生这种情况。

答案 2 :(得分:0)

今天mtl-2.1.2-23.tentative.tar.gz版本的MTL也遇到了同样的问题。

解决方案是改变:

typedef dimension<size_type> dim_type;

typedef mtl::dimension<size_type> dim_type;
在envelope2D.h文件中的

。 我还必须添加

#include <cstddef>

在light1D.h的开头。