0

mathsヘッダー ファイルのみで構成されるライブラリであるディレクトリがあります。ホームディレクトリで次のコマンドを実行して、プログラムをコンパイルしようとしています。

g++ -I ../maths prog1.cpp prog2.cpp test.cpp -o et -lboost_date_time -lgsl -lgslcblas

しかし、次のコンパイル エラーが発生します。

prog1.cpp:4:23: fatal error: maths/Dense: No such file or directory
compilation terminated.
prog2.cpp:6:23: fatal error: maths/Dense: No such file or directory
compilation terminated.

maths.cpp ファイルと同じディレクトリ (ホーム ディレクトリ) にあり、自宅からもコンパイル ラインを実行しています。

prog1.cpp と prog2.cpp の #include<maths/Dense>4 行目と 6 行目にそれぞれ次のヘッダーがあるため、エラーが発生します。

どうすれば修正できますか。

4

2 に答える 2

2

インクルードパスを変更するか、インクルードを次のように変更でき-I..ます#include <Dense>

mathsソースファイルと同じディレクトリにあり、それが現在のディレクトリである場合は、インクルードパスまたはインクルードをに変更でき-I.ます#include "Dense"

于 2012-04-25T21:56:56.187 に答える
1

maths は、.cpp ファイルと同じディレクトリ (ホーム ディレクトリ) にあります。

インクルード パスは次のように指定され-I ../mathsます。親ディレクトリではなく、現在のディレクトリのサブディレクトリであるため-I ./maths、必要です。右?-I mathsmaths

次に、C++ ファイルで#include <Dense>. 使用#include <maths/Dense>する場合は、インクルード パスを調整する必要があります。ただし、使用-I.すると大きな問題が発生する可能性があります1 。これには強くお勧めません。

代わりに、includeサブディレクトリを含めるのが一般的です。したがって、フォルダー構造は次のようになることが望ましいです。

./
+ include/
| + maths/
|   + Dense
|
+ your_file.cpp

次に-I include、C++ ファイルで と を使用します#include <maths/Dense>


1)./map.cppと呼ばれる実行可能ファイルを生成するファイルを取得した場合に何が起こるかを考えてみましょう./map#include <map>コードのどこかで使用するとすぐに、これは標準ヘッダー./mapの代わりにインクルードしようとします。map

于 2012-04-25T21:58:59.727 に答える