OpenGL错误链接
Posted
技术标签:
【中文标题】OpenGL错误链接【英文标题】:OpenGl error linking 【发布时间】:2016-11-21 13:50:39 【问题描述】:大家好,最近正在学习 opengl 的基础知识。 如此了解他们,我尝试编写我的第一个程序。一开始我尝试使用允许您为绘图调用创建缓冲区的函数。但是链接器告诉我这些函数是未声明的。所以我尝试了旧的(我想也许我错了)并且它有效。 所以我的代码如下
#include <GL/glut.h>
#include <GL/glext.h>
#include <GL/gl.h>
#include <stdlib.h>
#include <stdio.h>
void reshape(int, int);
void display(void);
void keyboard(unsigned char, int, int);
int main(int argc, char** argv)
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition (100, 100);
glutCreateWindow(argv[0]);
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_FLAT);
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
void reshape(int w, int h)
glViewport(0,0,(GLsizei) w, (GLsizei) h);
void display(void)
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLuint* i;
glGenBuffers(1,i);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glColor3f(1.0f,1.00f,1.0f);
glVertex3f(0.5f, 0.0f, 0.0f);
glVertex3f(-0.5f,0.5f, 0.0f);
glVertex3f( 0.0f,-0.5f, 0.0f);
glEnd();
glBegin(GL_TRIANGLES);
glColor3f(1.0f,1.00f,1.0f);
glVertex3f(-0.5f, 0.0f, 0.0f);
glVertex3f(0.5f,0.5f, 0.0f);
glVertex3f(0.0f,-0.5f, 0.0f);
glEnd();
//glutWireCube(10);
glFlush();
void keyboard(unsigned char key, int x, int y)
switch(key)
case 'l':
break;
glGenBuffers 和所有 gl* 函数带来的问题。 这是gcc使用的命令
gcc -o cube main.c -lGL -lGLU -lglut
这是错误
main.c: In function ‘display’:
main.c:40:3: warning: implicit declaration of function ‘glGenBuffers’ [-Wimplicit-function-declaration]
glGenBuffers(1,i);
对不起我的英语,谢谢大家。
【问题讨论】:
您使用的是什么操作系统(或发行版)? Ubuntu 最新版本 【参考方案1】:您的代码开头缺少以下行
#define GL_GLEXT_PROTOTYPES
#include <GL/glut.h>
#include <GL/glext.h>
#include <GL/gl.h>
#include <stdlib.h>
#include <stdio.h>
它在我的 Ubuntu 计算机上编译时没有任何警告,请参阅 glGenBuffers not defined?
【讨论】:
我将您的问题评为最佳以上是关于OpenGL错误链接的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2012 C++ OpenGL GLFW 链接器错误 [重复]
这些'未定义的对 __glut*WithExit' OpenGL 链接器错误的引用是啥意思? [复制]