5

これは私の問題に対する正しい答えのようですが、以下のリンクで説明されている手順が既にあるため、メイクファイルを作成している方法の方が多いと思います(ビルド方法を知っています)。

線形代数の C++ テンプレート ライブラリである Eigen を使用する C++ プロジェクトのメイクファイルを作成する方法は?

エラー:

SASAGeometry.h:6:22: error: Eigen/Core: No such file or directory 
SASAGeometry.h:7:20: error: Eigen/LU: No such file or directory

私のヘッダーファイルの問題のある行は単純です:

#include <Eigen/Core>
#include <Eigen/LU>

これがmakefileです(INCLUDE行でやり過ぎです、私は知っています):

CC = g++
BIN = .

INCLUDE = -I/usr/local/include/eigen2/ -I. -I/usr/local/include/eigen2/Eigen/ -I/home/mark/Applications/eigen/Eigen/src/ -I /usr/local/include

CFLAGS = -pipe

LFLAGS = -lm

GeomTest_OBJS = geomTest.o SASAGeometry.o

geomTest_source = SASAGeometry.cpp SASAGeometry.h sasa_transformMatrix.cpp sasa_transformMatrix.h geomSetup.cpp


geomTest    : $(GeomTest_OBJS) makefile
            $(CC) -o geomTest.o -o SASAGeometry.o $(LIBS) $(INCLUDE) $(CFLAGS) $(geomTest_source) $(LFLAGS)
            $(CC) $(LIBS) $(INCLUDE) $(CFLAGS) -o $(BIN)/geomTest geomTest.o SASAGeometry.o $(LFLAGS)

clean       : \rm *.o *~ p1

何かご意見は?

前もって感謝します!

4

2 に答える 2

5

(注意してください、最終的な解決策の要点を得るためにコメントを読んでください。質問の元の投稿者から明確になったら、回答を更新します。)

見落としがちなのが明白な場合もあります。/usr/local/include/eigen2 および /usr/local/include/eigen2/Eigen 内のすべてのファイルとディレクトリに対する読み取り権限がユーザーにあることを確認してください。また、含めるファイルが実際に /usr/local/include/eigen2/Eigen に存在することを再確認してください。

追加: インストールは /usr/include/eigen2 に直接展開され、ドキュメントが想定しているように /usr/include/Eigen には展開されていないようです。つまり、チュートリアルで必要なヘッダー ファイルは /usr/include/eigen2 にあります。-I を指定する必要があり/usr/include/ます (GNU GCC ではデフォルトで指定されていると思います)。ソース コードが正しくありません。 と である必要が #include <eigen2/Core>あり#include <eigen2/LU>ます。システムに eigen をインストールした人は誰でも、ドキュメントで指定されているルート ディレクトリの名前を変更しました。

于 2011-10-24T15:36:35.750 に答える
1

リンク先の質問には正しい答えがあります。-IEigen ヘッダーを指す適切なフラグを使用するだけです。-Iすべての Eigen ヘッダーに対して1 つだけ必要です。

于 2011-10-24T15:17:46.977 に答える