(编译器错误)为什么C ++找不到.h文件,即使它在那里?

时间:2013-03-04 20:56:19

标签: c++ compiler-errors

我正在尝试运行一个C ++文件,即experiment.cpp。在编译.cpp文件时,我收到RL_glue.h不存在的错误,即使RL_glue.h与C ++文件位于同一目录中。我很乐意就此问题征求您的意见。谢谢!

包括如下:

#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"

我使用的编译器是gcc 4.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.

2 个答案:

答案 0 :(得分: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.添加到编译器选项,以便无论包含样式,都会搜索当前目录.

答案 1 :(得分:2)

查找包含文件的规则因编译器而异,你没有说出你使用的是哪一个,所以很难说......但我还是会尝试。

通常,当您使用#include <file>时,会在系统目录中搜索它,当您编写#include "file"时,会在项目目录中搜索它。

我的猜测是,当您使用<>语法时,您正在使用""样式。

如果这不起作用,您可能需要将当前目录添加到搜索路径,通常使用-I.编译器选项,或者如果您使用IDE,则搜索项目选项。