c++ - 有很多过剩错误

标签 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: In function `RenderSceneCB()':

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

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

/tmp/ccOoXvqJ.o: In function `InitializeGlutCallbacks()':

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

/tmp/ccOoXvqJ.o: In function `main': tutorial01.cpp:(.text+0x43):

undefined reference to `glutInit' tutorial01.cpp:(.text+0x4d):

undefined reference to `glutInitDisplayMode'

tutorial01.cpp:(.text+0x5c): undefined reference to

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

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

reference to `glutCreateWindow' tutorial01.cpp:(.text+0x8b): undefined

reference to `glClearColor' tutorial01.cpp:(.text+0x90): undefined

reference to `glutMainLoop' collect2: ld returned 1 exit status

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

最佳答案

您看到的是链接器错误,即您的编译器处理的代码已成功转换为编译单元。现在,链接器试图生成一个可执行文件,但在处理编译单元的松散端时遇到了麻烦,即对 GLUT 和 OpenGL 符号的引用。您必须告诉链接器除了您的编译单元和标准库之外,还有什么地方可以查看。

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

关于c++ - 有很多过剩错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001628/

相关文章:

即使使用GL_NEAREST(GL_TEXTURE_2D),OpenGL仍会尝试模糊

c++ - 替代过剩

c++ - 有没有一种很好的方法来实现具有默认失败情况的条件类型?

c++ - 从轮廓 OpenCV 中提取矩形

c++ - glClearColor 和 glClear 上的 GLFW 异常

macos - 在 OS X Mavericks 上安装 FreeGLUT

c++ - 在cpp中访问头变量

c++ - std::cout 同时在下方输出更多文本

c++ - 在 GLUT 应用程序中隐藏控制台窗口的可移植方法?

c++ - OpenGL 洪水填充无法识别边界