我找到了这段代码,想试试我的机器:
#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。
答案 0 :(得分:2)
您所看到的是链接器错误,即编译器处理的代码已成功转换为编译单元。现在,链接器尝试制作一个exectuable,并且无法将编译单元的松散端绑定起来,即对GLUT和OpenGL符号的引用。除了编译单元和标准库之外,您必须告诉链接器还有哪些内容。
由于您的错误消息看起来像GCC产生的,我建议您将-lGL -lglut
添加到编译器的命令行。
答案 1 :(得分:1)
这些是Glut和OpenGL的链接器错误。链接器是试图将所有目标文件链接在一起以获得exe的软件。
您需要将它们(OpenGl和Glut)与您的项目相关联。谷歌有很多答案=)
答案 2 :(得分:1)
我下载了freeglut
并使用MinGW在我的Code :: block中编译代码,我发现你的问题在于库,你需要链接libopengl32.a
和{{1}所以程序可以运行它。