【发布时间】:2016-03-18 15:58:07
【问题描述】:
我想学习使用着色器,因此在 Netbeans(8.0.2 版)上创建了一个新的 C++ 项目。
我想包含本教程中所述的 GLFW 和 GLEW 库:http://www.learnopengl.com/#!Getting-started/Creating-a-window
我目前正在努力正确导入 glew。使用 #include <GL/glew.h> 时,编译器(我在 Windows10x64/Cygwin 控制台上使用 GNU g++)会抛出大量错误。 glu.h 似乎有问题。出于测试目的,我在 glew.h 中删除了 glu.h 的导入。这消除了错误,但也阻止了 openGL 完全加载(以 gl 开头的函数是“未定义的”,如glViewport)。所以这不是解决办法。
在普通glew.h上调用编译器得到的输出:
g++ -m64 -c -g -Wall -I/cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/ -I/cygdrive/C/Users/Erik/programming/Libraries/glfw-3.1.2.bin.WIN32/glfw-3.1.2.bin.WIN32/include/ -std=c++11 -MMD -MP -MF "build/Debug/Cygwin-Windows/startup.o.d" -o build/Debug/Cygwin-Windows/startup.o startup.cc
In file included from /cygdrive/C/Users/Erik/programming/Libraries/glew-1.13.0-win32/glew-1.13.0/include/GL/glew.h:1202:0,
from startup.cc:5:
/usr/include/w32api/GL/glu.h:68:79: error: expected ')' before '*' token
void APIENTRY gluQuadricCallback(GLUquadric *qobj,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:68:79: error: expected ')' before '*' token
/usr/include/w32api/GL/glu.h:68:79: error: expected initializer before '*' token
/usr/include/w32api/GL/glu.h:78:79: error: expected ')' before '*' token
void APIENTRY gluTessCallback(GLUtesselator *tess,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:78:79: error: expected ')' before '*' token
/usr/include/w32api/GL/glu.h:78:79: error: expected initializer before '*' token
/usr/include/w32api/GL/glu.h:94:75: error: expected ')' before '*' token
void APIENTRY gluNurbsCallback(GLUnurbs *nobj,GLenum which,void (CALLBACK *fn)());
^
/usr/include/w32api/GL/glu.h:94:75: error: expected ')' before '*' token
/usr/include/w32api/GL/glu.h:94:75: error: expected initializer before '*' token
/usr/include/w32api/GL/glu.h:96:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUquadricErrorProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:97:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessBeginProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:98:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessEdgeFlagProc) (GLboolean);
^
/usr/include/w32api/GL/glu.h:99:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessVertexProc)(void *);
^
/usr/include/w32api/GL/glu.h:100:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessEndProc)(void);
^
/usr/include/w32api/GL/glu.h:101:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessErrorProc)(GLenum);
^
/usr/include/w32api/GL/glu.h:102:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessCombineProc)(GLdouble[3],void*[4],GLfloat[4],void**);
^
/usr/include/w32api/GL/glu.h:103:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessBeginDataProc)(GLenum,void *);
^
/usr/include/w32api/GL/glu.h:104:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessEdgeFlagDataProc) (GLboolean,void *);
^
/usr/include/w32api/GL/glu.h:105:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessVertexDataProc)(void *,void *);
^
/usr/include/w32api/GL/glu.h:106:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessEndDataProc)(void *);
^
/usr/include/w32api/GL/glu.h:107:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessErrorDataProc)(GLenum,void *);
^
/usr/include/w32api/GL/glu.h:108:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUtessCombineDataProc)(GLdouble[3],void*[4],GLfloat[4],void**,void*);
^
/usr/include/w32api/GL/glu.h:109:24: error: expected ')' before '*' token
typedef void (CALLBACK *GLUnurbsErrorProc)(GLenum);
^
对我来说,(我不是 C++ 专业人士,因此在解释错误消息方面不是很好)似乎 CALLBACK 尚未定义。关于如何解决这个问题的任何想法?
【问题讨论】:
-
没有语言 C/C++。只有两种不同语言 C 和 C++。选择你实际使用的那个!
-
不要只使用链接。一个问题必须是独立的。学习How to Ask。
-
你能展示一个编译失败的代码的最小例子吗?
-
您确定包含所有必需的标题吗?编译器能找到它们吗?
#include <GL/glew.h>是否指向有效的,例如现有的,文件? -
这个答案stackoverflow.com/questions/19198244/… 可能就是你要找的:)