2

C ++ファイル、つまりexperiment.cppを実行しようとしています。.cppファイルをコンパイルすると、RL_glue.hがC ++ファイルと同じディレクトリにあるにもかかわらず、RL_glue.hが存在しないというエラーが表示されます。この問題についてのご提案をお待ちしております。ありがとう!

インクルードは次のとおりです。

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <RL_glue.h>
#include <RL_common.h>

コメントで提案されているように変更しましたが:

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include "RL_glue.h"
#include "RL_common.h"

私が使用しているコンパイラはgcc4.6.3で、コンパイルコマンドはg ++ -Wall -c "%f"です。

訂正:「....」の変更により、コンパイラーはRL_glue.hを検出しましたが、RL_common.hの検出に特に失敗しました。

正確なコンパイラエラー:

g++ -Wall -c "experiment.cpp" (in directory: /home/issam/Helicopter_Control/Code/Release)
In file included from experiment.cpp:9:0:
./RL_glue.h:4:23: fatal error: RL_common.h: No such file or directory
compilation terminated.
Compilation failed.
4

2 に答える 2

5

コンパイラのエラーの場所に注意してください。

./RL_glue.h:4:23

エラーは、RL_glue.hそのRL_common.hファイルのインクルードではなく、インクルードにあります。これは、ファイルRL_glue.hの4行目に次のようなものがあるためです。

#include <RL_common.h>

それ以外の:

#include "RL_common.h"

その行を置き換えることができます。または-I.、コンパイラオプションに追加する方が簡単です。これにより、インクルードスタイルに関係なく、現在のディレクトリ.が検索されます。

于 2013-03-04T21:24:52.020 に答える
2

インクルードされたファイルを見つけるためのルールはコンパイラーによって異なり、どちらを使用するかを言わなかったのでわかりにくいです...しかし、とにかくやってみます。

通常、使用する#include <file>場合はシステムディレクトリで検索され、書き込む#include "file"場合はプロジェクトディレクトリで検索されます。

私の推測では、構文<>を使用する必要があるときにスタイルを使用していると思います。""

それが機能しない場合は、通常は-I.コンパイラオプションを使用して、現在のディレクトリを検索パスに追加する必要があります。IDEを使用している場合は、プロジェクトオプションを検索します。

于 2013-03-04T20:58:51.917 に答える