我找到了这段代码,想在我的机器上试试:
#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/