有很多过剩的错误

时间:2013-09-25 09:52:06

标签: c++ opengl glut freeglut

我找到了这段代码,想试试我的机器:

#include <GL/freeglut.h>

static void RenderSceneCB()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glutSwapBuffers();
}

static void InitializeGlutCallbacks()
{
    glutDisplayFunc(RenderSceneCB);
}


int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
    glutInitWindowSize(1024, 768);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("Tutorial 01");

    InitializeGlutCallbacks();

    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

    glutMainLoop();

    return 0;
}

我收到了这些错误:

  

g ++ tutorial01.cpp

     

/tmp/ccOoXvqJ.o:在函数`RenderSceneCB()'中:

     

tutorial01.cpp :(。text + 0xa):对'glClear'的未定义引用

     

tutorial01.cpp :(。text + 0xf):未定义的引用`glutSwapBuffers'

     

/tmp/ccOoXvqJ.o:在函数`InitializeGlutCallbacks()'中:

     

tutorial01.cpp :(。text + 0x1f):未定义的引用`glutDisplayFunc'

     

/tmp/ccOoXvqJ.o:在函数`main'中:tutorial01.cpp :(。text + 0x43):

     

对'glutInit'的未定义引用tutorial01.cpp :(。text + 0x4d):

     

对“glutInitDisplayMode”的未定义引用

     

tutorial01.cpp :(。text + 0x5c):对

的未定义引用      

`glutInitWindowSize'tutorial01.cpp :(。text + 0x6b):未定义的引用

     

到`glutInitWindowPosition'tutorial01.cpp :(。text + 0x75):undefined

     

引用`glutCreateWindow'tutorial01.cpp :(。text + 0x8b):undefined

     

引用`glClearColor'tutorial01.cpp :(。text + 0x90):undefined

     

引用`glutMainLoop'collect2:ld返回1退出状态

我想我已经在我的机器上成功安装了freeglut3-dev。你能告诉我为什么我会收到这么多错误吗?我正在使用Ubuntu 12.04。

3 个答案:

答案 0 :(得分:2)

您所看到的是链接器错误,即编译器处理的代码已成功转换为编译单元。现在,链接器尝试制作一个exectuable,并且无法将编译单元的松散端绑定起来,即对GLUT和OpenGL符号的引用。除了编译单元和标准库之外,您必须告诉链接器还有哪些内容。

由于您的错误消息看起来像GCC产生的,我建议您将-lGL -lglut添加到编译器的命令行。

答案 1 :(得分:1)

这些是Glut和OpenGL的链接器错误。链接器是试图将所有目标文件链接在一起以获得exe的软件。

您需要将它们(OpenGl和Glut)与您的项目相关联。谷歌有很多答案=)

答案 2 :(得分:1)

我下载了freeglut并使用MinGW在我的Code :: block中编译代码,我发现你的问题在于库,你需要链接libopengl32.a和{{1}所以程序可以运行它。