g ++找不到头文件

时间:2012-01-05 00:32:22

标签: c++

我正在从Java迁移到C ++。似乎C ++在单独的文件中进行类声明很困难。所以我需要你的帮助,

在我的main.cpp中:

#include "Sphere.h"

using namespace std;
.....
...
..

int main( void ) {
   Sphere *earth = new Sphere(sphere_start ,sphere_end);
...
..
.

在我的Sphere.h中

class Sphere
{

    public:
        Sphere(int,int);

}

和我的Sphere.cpp

#include "Sphere.h"

using namespace std;

int sphere_start, sphere_end;   

Sphere::Sphere (int a, int b)
{
    sphere_start = a;
    sphere_end = b;
}

void Sphere::render(int i) 
{
   ....
   ..
   .

}

这是我认为导致以下错误的基本代码:

main.cpp:14:20: fatal error: Sphere.h: No such file or directory
compilation terminated.

为什么?

4 个答案:

答案 0 :(得分:5)

您需要在编译命令中添加一个可以找到头文件的路径。

如果您的标题位于headers目录中,请添加-Iheaders

g++ -o main.o -c -Iheaders main.cpp
g++ -o sphere.o -c -Iheaders sphere.cpp
g++ -o app main.o sphere.o -L.

或者你的文件是什么......

答案 1 :(得分:4)

Sphere.h必须与包含它的每个文件位于同一目录中,或者必须指示编译器搜索Sphere.h所在的目录。

答案 2 :(得分:2)

你应该发布你的命令行,但我的猜测是你应该告诉编译器头文件的路径。如果您使用的是linux,请尝试:

g++ main.cpp shpere.cpp -I<path_to_Sphere.h> -o main

答案 3 :(得分:1)

两个潜在错误:

  • Sphere.h与main.cpp位于同一目录中吗?
  • Sphere.h是否命名为Sphere.h而不是sphere.h?