我有一个使用GLEW的OpenGL C项目。当我使用MinGW64在Windows中编译时,我收到以下错误:
In file included from C:/Program Files/Git/mingw64/x86_64-w64-mingw32/include/GL/glew.h:1204:0,
from ...
C:/Program Files/Git/mingw64/x86_64-w64-mingw32/include/GL/glu.h:68:79: error: expected ')' before '*' token
void APIENTRY gluQuadricCallback(GLUquadric *qobj,GLenum which,void (CALLBACK *fn)());
^
C:/Program Files/Git/mingw64/x86_64-w64-mingw32/include/GL/glu.h:78:79: error: expected ')' before '*' token
void APIENTRY gluTessCallback(GLUtesselator *tess,GLenum which,void (CALLBACK *fn)());
^
C:/Program Files/Git/mingw64/x86_64-w64-mingw32/include/GL/glu.h:96:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUquadricErrorProc)(GLenum);
...
以下是导致文件GL / glew.h中的错误的代码片段:1204:0
1199 #ifndef GLEW_NO_GLU
1200 /* this is where we can safely include GLU */
1201 # if defined(__APPLE__) && defined(__MACH__)
1202 # include <OpenGL/glu.h>
1203 # else
1204 # include <GL/glu.h>
1205 # endif
1206 #endif
第1204行是GLU的一个包含,但我不知道为什么我会这样,我不在我的项目中使用GLU。
如果我在此代码段之前添加行#define GLEW_NO_GLU
,则会跳过它,并且不再包含GLU。 结果:没有更多错误。我的程序编译并运行得很好。
有人可以解释发生了什么吗?为什么我必须修改GLEW标头才能使其正常工作?