0

我找到了这段代码并想在我的机器上尝试:

#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++教程01.cpp

/tmp/ccOoXvqJ.o:在函数“RenderSceneCB()”中:

tutorial01.cpp:(.text+0xa): undefined reference to `glClear'

tutorial01.cpp:(.text+0xf): undefined reference to `glutSwapBuffers'

/tmp/ccOoXvqJ.o:在函数“InitializeGlutCallbacks()”中:

tutorial01.cpp:(.text+0x1f): undefined reference to `glutDisplayFunc'

/tmp/ccOoXvqJ.o:在函数“main”中:tutorial01.cpp:(.text+0x43):

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

未定义对“glutInitDisplayMode”的引用

tutorial01.cpp:(.text+0x5c): 未定义的引用

`glutInitWindowSize' tutorial01.cpp:(.text+0x6b): undefined reference

to `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。

4

3 回答 3

2

您所看到的是链接器错误,即您的编译器处理的代码已成功转换为编译单元。现在,链接器尝试创建一个可执行文件,并且在绑定编译单元的松散端时遇到了麻烦,即对 GLUT 和 OpenGL 符号的引用。您必须告诉链接器在哪里查找,而不仅仅是您的编译单元和标准库。

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

于 2013-09-25T10:21:31.033 回答
1

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

您需要将它们(OpenGl 和 Glut)与您的项目链接起来。谷歌有很多答案 =)

于 2013-09-25T10:09:36.807 回答
1

我使用 MinGW 下载freeglut并编译了我的 Code::blocks 中的代码,我发现您的问题出在库上,您需要链接libopengl32.alibfreeglut.a以便程序可以运行它。

于 2013-09-25T10:23:29.027 回答