现代OpenGL和GLEW Libraray的编译错误

Compilng Error With modern OpenGL and GLEW Libraray

本文关键字:编译 错误 Libraray GLEW OpenGL 现代      更新时间:2023-10-16

>我正在尝试使用 glew,但在编译时不断收到错误。我正在运行Ubuntu,并拥有Nvidia显卡。我已经使用 apt 安装了 glew。编译时出现错误:

g++ -c main.cpp && g++ main.o -o main -lGL -lGLU -lglfw -lglut

这是我的代码:

#include <GLFW/glfw3.h>
#include <GL/glew.h>
#include <stdlib.h> 
#include <stdio.h>
#include <iostream>
using namespace std;
static void error_callback(int error, const char* description)
{
fputs(description, stderr);
}
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(window, GL_TRUE);
}
int main(void)
{
GLFWwindow* window;
glfwSetErrorCallback(error_callback);
if (!glfwInit())
exit(EXIT_FAILURE);
window = glfwCreateWindow(1336, 768, "Simple example", NULL, NULL);
glfwMakeContextCurrent(window);

glfwSetKeyCallback(window, key_callback);
while (!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f,-0.5f);
glVertex2f( 0.0f, 0.5f);
glVertex2f( 0.5f,-0.5f);
glEnd();
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}

这是我的错误消息

´´´
/usr/include/GL/glew.h:85:2: error: #error gl.h included before glew.h
85 | #error gl.h included before glew.h
|  ^~~~~
/usr/include/GL/glew.h:97:2: error: #error glext.h included before glew.h
97 | #error glext.h included before glew.h
|  ^~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15756:28: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum, GLfloat*)’
15756 | typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, GLfloat* params);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12301:25: note: previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTMODELFVSGIXPROC)(GLenum, const GLfloat*)’
12301 | typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELFVSGIXPROC) (GLenum pname, const GLfloat *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15758:28: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum, GLint*)’
15758 | typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, GLint* params);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12303:25: note: previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTMODELIVSGIXPROC)(GLenum, const GLint*)’
12303 | typedef void (APIENTRYP PFNGLFRAGMENTLIGHTMODELIVSGIXPROC) (GLenum pname, const GLint *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15760:28: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, GLfloat*)’
15760 | typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, GLfloat* params);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12297:25: note: previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTFVSGIXPROC)(GLenum, GLenum, const GLfloat*)’
12297 | typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFVSGIXPROC) (GLenum light, GLenum pname, const GLfloat *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15762:28: error: conflicting declaration ‘typedef void (* PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum, GLenum, GLint*)’
15762 | typedef void (GLAPIENTRY * PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, GLint* params);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12299:25: note: previous declaration as ‘typedef void (* PFNGLFRAGMENTLIGHTIVSGIXPROC)(GLenum, GLenum, const GLint*)’
12299 | typedef void (APIENTRYP PFNGLFRAGMENTLIGHTIVSGIXPROC) (GLenum light, GLenum pname, const GLint *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15769:28: error: conflicting declaration ‘typedef void (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, const GLfloat*)’
15769 | typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, const GLfloat* data);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12310:25: note: previous declaration as ‘typedef void (* PFNGLGETFRAGMENTMATERIALFVSGIXPROC)(GLenum, GLenum, GLfloat*)’
12310 | typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALFVSGIXPROC) (GLenum face, GLenum pname, GLfloat *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:15770:28: error: conflicting declaration ‘typedef void (* PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum, GLenum, const GLint*)’
15770 | typedef void (GLAPIENTRY * PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, const GLint* data);
|                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/GL/gl.h:2050,
from /usr/include/GLFW/glfw3.h:210,
from main.cpp:2:
/usr/include/GL/glext.h:12311:25: note: previous declaration as ‘typedef void (* PFNGLGETFRAGMENTMATERIALIVSGIXPROC)(GLenum, GLenum, GLint*)’
12311 | typedef void (APIENTRYP PFNGLGETFRAGMENTMATERIALIVSGIXPROC) (GLenum face, GLenum pname, GLint *params);
|                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from main.cpp:3:
/usr/include/GL/glew.h:16433:17: error: ‘PFNGLCLIENTACTIVETEXTUREPROC’ does not name a type; did you mean ‘PFNGLCLIENTACTIVETEXTUREARBPROC’?
16433 | GLEW_FUN_EXPORT PFNGLCLIENTACTIVETEXTUREPROC __glewClientActiveTexture;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCLIENTACTIVETEXTUREARBPROC
/usr/include/GL/glew.h:16441:17: error: ‘PFNGLLOADTRANSPOSEMATRIXDPROC’ does not name a type; did you mean ‘PFNGLLOADTRANSPOSEMATRIXDARBPROC’?
16441 | GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDPROC __glewLoadTransposeMatrixd;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLLOADTRANSPOSEMATRIXDARBPROC
/usr/include/GL/glew.h:16442:17: error: ‘PFNGLLOADTRANSPOSEMATRIXFPROC’ does not name a type; did you mean ‘PFNGLLOADTRANSPOSEMATRIXFARBPROC’?
16442 | GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFPROC __glewLoadTransposeMatrixf;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLLOADTRANSPOSEMATRIXFARBPROC
/usr/include/GL/glew.h:16443:17: error: ‘PFNGLMULTTRANSPOSEMATRIXDPROC’ does not name a type; did you mean ‘PFNGLMULTTRANSPOSEMATRIXDARBPROC’?
16443 | GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDPROC __glewMultTransposeMatrixd;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTTRANSPOSEMATRIXDARBPROC
/usr/include/GL/glew.h:16444:17: error: ‘PFNGLMULTTRANSPOSEMATRIXFPROC’ does not name a type; did you mean ‘PFNGLMULTTRANSPOSEMATRIXFARBPROC’?
16444 | GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXFPROC __glewMultTransposeMatrixf;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTTRANSPOSEMATRIXFARBPROC
/usr/include/GL/glew.h:16445:17: error: ‘PFNGLMULTITEXCOORD1DPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16445 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DPROC __glewMultiTexCoord1d;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16446:17: error: ‘PFNGLMULTITEXCOORD1DVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD1HNVPROC’?
16446 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1DVPROC __glewMultiTexCoord1dv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD1HNVPROC
/usr/include/GL/glew.h:16447:17: error: ‘PFNGLMULTITEXCOORD1FPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16447 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FPROC __glewMultiTexCoord1f;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16448:17: error: ‘PFNGLMULTITEXCOORD1FVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD1HNVPROC’?
16448 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1FVPROC __glewMultiTexCoord1fv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD1HNVPROC
/usr/include/GL/glew.h:16449:17: error: ‘PFNGLMULTITEXCOORD1IPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16449 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IPROC __glewMultiTexCoord1i;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16450:17: error: ‘PFNGLMULTITEXCOORD1IVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD1HNVPROC’?
16450 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1IVPROC __glewMultiTexCoord1iv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD1HNVPROC
/usr/include/GL/glew.h:16451:17: error: ‘PFNGLMULTITEXCOORD1SPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16451 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SPROC __glewMultiTexCoord1s;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16452:17: error: ‘PFNGLMULTITEXCOORD1SVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD1HNVPROC’?
16452 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD1SVPROC __glewMultiTexCoord1sv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD1HNVPROC
/usr/include/GL/glew.h:16453:17: error: ‘PFNGLMULTITEXCOORD2DPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16453 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DPROC __glewMultiTexCoord2d;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16454:17: error: ‘PFNGLMULTITEXCOORD2DVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD2HNVPROC’?
16454 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2DVPROC __glewMultiTexCoord2dv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD2HNVPROC
/usr/include/GL/glew.h:16455:17: error: ‘PFNGLMULTITEXCOORD2FPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16455 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FPROC __glewMultiTexCoord2f;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16456:17: error: ‘PFNGLMULTITEXCOORD2FVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD2HNVPROC’?
16456 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2FVPROC __glewMultiTexCoord2fv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD2HNVPROC
/usr/include/GL/glew.h:16457:17: error: ‘PFNGLMULTITEXCOORD2IPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16457 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IPROC __glewMultiTexCoord2i;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16458:17: error: ‘PFNGLMULTITEXCOORD2IVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD2HNVPROC’?
16458 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2IVPROC __glewMultiTexCoord2iv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD2HNVPROC
/usr/include/GL/glew.h:16459:17: error: ‘PFNGLMULTITEXCOORD2SPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16459 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SPROC __glewMultiTexCoord2s;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16460:17: error: ‘PFNGLMULTITEXCOORD2SVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD2HNVPROC’?
16460 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD2SVPROC __glewMultiTexCoord2sv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD2HNVPROC
/usr/include/GL/glew.h:16461:17: error: ‘PFNGLMULTITEXCOORD3DPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16461 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DPROC __glewMultiTexCoord3d;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16462:17: error: ‘PFNGLMULTITEXCOORD3DVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD3HNVPROC’?
16462 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3DVPROC __glewMultiTexCoord3dv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD3HNVPROC
/usr/include/GL/glew.h:16463:17: error: ‘PFNGLMULTITEXCOORD3FPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16463 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FPROC __glewMultiTexCoord3f;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16464:17: error: ‘PFNGLMULTITEXCOORD3FVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD3HNVPROC’?
16464 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3FVPROC __glewMultiTexCoord3fv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD3HNVPROC
/usr/include/GL/glew.h:16465:17: error: ‘PFNGLMULTITEXCOORD3IPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16465 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IPROC __glewMultiTexCoord3i;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16466:17: error: ‘PFNGLMULTITEXCOORD3IVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD3HNVPROC’?
16466 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3IVPROC __glewMultiTexCoord3iv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD3HNVPROC
/usr/include/GL/glew.h:16467:17: error: ‘PFNGLMULTITEXCOORD3SPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16467 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SPROC __glewMultiTexCoord3s;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16468:17: error: ‘PFNGLMULTITEXCOORD3SVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD3HNVPROC’?
16468 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD3SVPROC __glewMultiTexCoord3sv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD3HNVPROC
/usr/include/GL/glew.h:16469:17: error: ‘PFNGLMULTITEXCOORD4DPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16469 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DPROC __glewMultiTexCoord4d;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16470:17: error: ‘PFNGLMULTITEXCOORD4DVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16470 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4DVPROC __glewMultiTexCoord4dv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16471:17: error: ‘PFNGLMULTITEXCOORD4FPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16471 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FPROC __glewMultiTexCoord4f;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16472:17: error: ‘PFNGLMULTITEXCOORD4FVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16472 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4FVPROC __glewMultiTexCoord4fv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16473:17: error: ‘PFNGLMULTITEXCOORD4IPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16473 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IPROC __glewMultiTexCoord4i;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16474:17: error: ‘PFNGLMULTITEXCOORD4IVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16474 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4IVPROC __glewMultiTexCoord4iv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16475:17: error: ‘PFNGLMULTITEXCOORD4SPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16475 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SPROC __glewMultiTexCoord4s;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:16476:17: error: ‘PFNGLMULTITEXCOORD4SVPROC’ does not name a type; did you mean ‘PFNGLMULTITEXCOORD4XPROC’?
16476 | GLEW_FUN_EXPORT PFNGLMULTITEXCOORD4SVPROC __glewMultiTexCoord4sv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLMULTITEXCOORD4XPROC
/usr/include/GL/glew.h:17107:17: error: ‘PFNGLCOLORSUBTABLEPROC’ does not name a type; did you mean ‘PFNGLCOLORSUBTABLEEXTPROC’?
17107 | GLEW_FUN_EXPORT PFNGLCOLORSUBTABLEPROC __glewColorSubTable;
|                 ^~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOLORSUBTABLEEXTPROC
/usr/include/GL/glew.h:17108:17: error: ‘PFNGLCOLORTABLEPROC’ does not name a type; did you mean ‘PFNGLCOLORTABLESGIPROC’?
17108 | GLEW_FUN_EXPORT PFNGLCOLORTABLEPROC __glewColorTable;
|                 ^~~~~~~~~~~~~~~~~~~
|                 PFNGLCOLORTABLESGIPROC
/usr/include/GL/glew.h:17109:17: error: ‘PFNGLCOLORTABLEPARAMETERFVPROC’ does not name a type; did you mean ‘PFNGLCOLORTABLEPARAMETERFVSGIPROC’?
17109 | GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERFVPROC __glewColorTableParameterfv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOLORTABLEPARAMETERFVSGIPROC
/usr/include/GL/glew.h:17110:17: error: ‘PFNGLCOLORTABLEPARAMETERIVPROC’ does not name a type; did you mean ‘PFNGLCOLORTABLEPARAMETERIVSGIPROC’?
17110 | GLEW_FUN_EXPORT PFNGLCOLORTABLEPARAMETERIVPROC __glewColorTableParameteriv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOLORTABLEPARAMETERIVSGIPROC
/usr/include/GL/glew.h:17111:17: error: ‘PFNGLCONVOLUTIONFILTER1DPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONFILTER1DEXTPROC’?
17111 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER1DPROC __glewConvolutionFilter1D;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONFILTER1DEXTPROC
/usr/include/GL/glew.h:17112:17: error: ‘PFNGLCONVOLUTIONFILTER2DPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONFILTER2DEXTPROC’?
17112 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONFILTER2DPROC __glewConvolutionFilter2D;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONFILTER2DEXTPROC
/usr/include/GL/glew.h:17113:17: error: ‘PFNGLCONVOLUTIONPARAMETERFPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONPARAMETERFEXTPROC’?
17113 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFPROC __glewConvolutionParameterf;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONPARAMETERFEXTPROC
/usr/include/GL/glew.h:17114:17: error: ‘PFNGLCONVOLUTIONPARAMETERFVPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONPARAMETERFVEXTPROC’?
17114 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERFVPROC __glewConvolutionParameterfv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONPARAMETERFVEXTPROC
/usr/include/GL/glew.h:17115:17: error: ‘PFNGLCONVOLUTIONPARAMETERIPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONPARAMETERIEXTPROC’?
17115 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIPROC __glewConvolutionParameteri;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONPARAMETERIEXTPROC
/usr/include/GL/glew.h:17116:17: error: ‘PFNGLCONVOLUTIONPARAMETERIVPROC’ does not name a type; did you mean ‘PFNGLCONVOLUTIONPARAMETERIVEXTPROC’?
17116 | GLEW_FUN_EXPORT PFNGLCONVOLUTIONPARAMETERIVPROC __glewConvolutionParameteriv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCONVOLUTIONPARAMETERIVEXTPROC
/usr/include/GL/glew.h:17117:17: error: ‘PFNGLCOPYCOLORSUBTABLEPROC’ does not name a type; did you mean ‘PFNGLCOPYCOLORSUBTABLEEXTPROC’?
17117 | GLEW_FUN_EXPORT PFNGLCOPYCOLORSUBTABLEPROC __glewCopyColorSubTable;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOPYCOLORSUBTABLEEXTPROC
/usr/include/GL/glew.h:17118:17: error: ‘PFNGLCOPYCOLORTABLEPROC’ does not name a type; did you mean ‘PFNGLCOPYCOLORTABLESGIPROC’?
17118 | GLEW_FUN_EXPORT PFNGLCOPYCOLORTABLEPROC __glewCopyColorTable;
|                 ^~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOPYCOLORTABLESGIPROC
/usr/include/GL/glew.h:17119:17: error: ‘PFNGLCOPYCONVOLUTIONFILTER1DPROC’ does not name a type; did you mean ‘PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC’?
17119 | GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER1DPROC __glewCopyConvolutionFilter1D;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOPYCONVOLUTIONFILTER1DEXTPROC
/usr/include/GL/glew.h:17120:17: error: ‘PFNGLCOPYCONVOLUTIONFILTER2DPROC’ does not name a type; did you mean ‘PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC’?
17120 | GLEW_FUN_EXPORT PFNGLCOPYCONVOLUTIONFILTER2DPROC __glewCopyConvolutionFilter2D;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLCOPYCONVOLUTIONFILTER2DEXTPROC
/usr/include/GL/glew.h:17121:17: error: ‘PFNGLGETCOLORTABLEPROC’ does not name a type; did you mean ‘PFNGLGETNCOLORTABLEPROC’?
17121 | GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPROC __glewGetColorTable;
|                 ^~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETNCOLORTABLEPROC
/usr/include/GL/glew.h:17122:17: error: ‘PFNGLGETCOLORTABLEPARAMETERFVPROC’ does not name a type; did you mean ‘PFNGLGETCOLORTABLEPARAMETERFVSGIPROC’?
17122 | GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERFVPROC __glewGetColorTableParameterfv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETCOLORTABLEPARAMETERFVSGIPROC
/usr/include/GL/glew.h:17123:17: error: ‘PFNGLGETCOLORTABLEPARAMETERIVPROC’ does not name a type; did you mean ‘PFNGLGETCOLORTABLEPARAMETERIVSGIPROC’?
17123 | GLEW_FUN_EXPORT PFNGLGETCOLORTABLEPARAMETERIVPROC __glewGetColorTableParameteriv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETCOLORTABLEPARAMETERIVSGIPROC
/usr/include/GL/glew.h:17124:17: error: ‘PFNGLGETCONVOLUTIONFILTERPROC’ does not name a type; did you mean ‘PFNGLGETNCONVOLUTIONFILTERPROC’?
17124 | GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONFILTERPROC __glewGetConvolutionFilter;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETNCONVOLUTIONFILTERPROC
/usr/include/GL/glew.h:17125:17: error: ‘PFNGLGETCONVOLUTIONPARAMETERFVPROC’ does not name a type; did you mean ‘PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC’?
17125 | GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERFVPROC __glewGetConvolutionParameterfv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETCONVOLUTIONPARAMETERFVEXTPROC
/usr/include/GL/glew.h:17126:17: error: ‘PFNGLGETCONVOLUTIONPARAMETERIVPROC’ does not name a type; did you mean ‘PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC’?
17126 | GLEW_FUN_EXPORT PFNGLGETCONVOLUTIONPARAMETERIVPROC __glewGetConvolutionParameteriv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETCONVOLUTIONPARAMETERIVEXTPROC
/usr/include/GL/glew.h:17127:17: error: ‘PFNGLGETHISTOGRAMPROC’ does not name a type; did you mean ‘PFNGLGETNHISTOGRAMPROC’?
17127 | GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPROC __glewGetHistogram;
|                 ^~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETNHISTOGRAMPROC
/usr/include/GL/glew.h:17128:17: error: ‘PFNGLGETHISTOGRAMPARAMETERFVPROC’ does not name a type; did you mean ‘PFNGLGETHISTOGRAMPARAMETERFVEXTPROC’?
17128 | GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERFVPROC __glewGetHistogramParameterfv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETHISTOGRAMPARAMETERFVEXTPROC
/usr/include/GL/glew.h:17129:17: error: ‘PFNGLGETHISTOGRAMPARAMETERIVPROC’ does not name a type; did you mean ‘PFNGLGETHISTOGRAMPARAMETERIVEXTPROC’?
17129 | GLEW_FUN_EXPORT PFNGLGETHISTOGRAMPARAMETERIVPROC __glewGetHistogramParameteriv;
|                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|                 PFNGLGETHISTOGRAMPARAMETERIVEXTPROC
´´´

还有一些这样的错误,但 Stack 溢出不允许我发布超过 30000 个字符。

阅读错误消息

/usr/include/GL/glew.h:85:2: error: #error gl.h included before glew.h

会产生非常相关的信息。glew.h必须包含在之前(或者在最好的情况下,而不是旧的GL.h(,glfw3.h将包含GL.h(默认情况下,至少,您可以设置一些预处理器宏来更改该行为,有关详细信息,请参阅 GLFW 构建指南(。简而言之:始终在所有其他可能与 GL 相关的内容之前包含 GL 加载器的标头:

#include <GL/glew.h>
#include <GLFW/glfw3.h>

此外,您缺少对glewInit的调用来实际加载这些 OpenGL 函数指针。

最后:

glBegin(GL_TRIANGLES);
glVertex2f(-0.5f,-0.5f);
glVertex2f( 0.0f, 0.5f);
glVertex2f( 0.5f,-0.5f);
glEnd();

这不是现代的OpenGL - 恰恰相反:这是您可能拥有的最宽松和最过时的OpenGL使用。这种即时模式的东西从那以后就存在了(1992年的GL 1.0(,最终在OpenGL 3.0中被弃用(2008年(,并从OpenGL 3.2核心配置文件中完全删除(自2009年以来(。

问题是你在 glew 之前包含了 glfw3。您可以通过更改包含它们的顺序或在任何包含之前放置 #define GLFW_INCLUDE_NONE 来解决此问题