1

数年前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、標準ヘッダーでいくつかの変更があったため、 (a)を知らせるcstddefためにヘッダーを含める必要があることがわかりました。ptrdiff_t

そのため、プロジェクトを使用して再コンパイルしたMTL 2ファイルにそのヘッダーを含めました。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または新しいバージョンを使用してコードをそれに適応させる方がよいかどうかです。(または、以前と同じコンパイラを使用しますg++ 4.4)

(a)cstddefヘッダーをファイルに直接含めましたMTL。代わりにプロジェクトファイルでそれを行うべきでしたか?

4

0 に答える 0