对对象的未定义引用

时间:2014-04-04 20:24:11

标签: c++ opengl linker gamekit

以下是我的代码。我面临的问题是它对Ball()的构造函数的未定义引用。我搜索了一下,有些人说这是一个链接错误。所以我还附加了我用来编译的Make文件。

World.h
    #ifndef WORLD_H
    #define WORLD_H

    #include "Ball.h"
    #include "Camera.h"
    #include "Stick.h"

     class World
     {

     public:
        Ball ball[15];
        Ball qBall;
        Camera camera;
        World();
        void update();
        void render();
     };

    #endif

world.cpp

    #include "World.h"

    World::World(){
        // set all initial declaration
     }
     //**************************************************************
     void World::update(){
        for (int i = 0; i < 15; ++i)
        {
            ball[i].update();
        }
     }

     //**************************************************************
     void World::render(){

     }

以下是我遇到的错误:

    ./libWorld.a(World.o): In function `World::World()':
    World.cpp:(.text+0x21): undefined reference to `Ball::Ball()'
    World.cpp:(.text+0x46): undefined reference to `Ball::Ball()'
    World.cpp:(.text+0x58): undefined reference to `Camera::Camera()'
    ./libWorld.a(World.o): In function `World::update()':
    World.cpp:(.text+0x97): undefined reference to `Ball::update()'
    collect2: ld returned 1 exit status
    make: *** [a.out] Error 1

如果是链接错误,我正在使用的make文件:

    a.out: readobj.cpp libBall.a libWorld.a libCamera.a libStick.a
        g++ -Wall readobj.cpp -L. -lBall -lWorld -lCamera -lStick -lglut -lGLU

    libWorld.a: World.o
        ar -rcs libWorld.a World.o
    World.o: World.cpp World.h libCamera.a libStick.a libBall.a
        g++ -Wall -c World.cpp -L. -lCamera -lStick -lBall


    libCamera.a: Camera.o
        ar -rcs libCamera.a Camera.o
    Camera.o: Camera.cpp Camera.h Game.h
        g++ -Wall -c Camera.cpp


    libStick.a: Stick.o
        ar -rcs libStick.a Stick.o
    Stick.o: Stick.cpp Stick.h Game.h
        g++ -Wall -c Stick.cpp


    libBall.a: Ball.o
        ar -rcs libBall.a Ball.o
    Ball.o: Ball.cpp Ball.h Game.h
        g++ -Wall -c Ball.cpp

1 个答案:

答案 0 :(得分:0)

问题在于链接库顺序,现在已修复。