-3

I want to learn to use shaders and therefore created a new C++ project on Netbeans (ver. 8.0.2).

I want to include the GLFW and the GLEW Library like stated in this tutorial: http://www.learnopengl.com/#!Getting-started/Creating-a-window

I'm currently struggeling at importing glew properly. When using #include <GL/glew.h>, the compiler (I use GNU g++ on Windows10x64/Cygwin console) throws a huge list of errors. It seems to be a problem with glu.h. I removed the impot of glu.h inside of glew.h for testing purposes. This removed the errors, but also prevented openGL from loading completely (functions starting with gl were "undefined", like glViewport). So that cannot be the solution.

The output I get when calling the compiler on the normal 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);
                        ^

To me, (i'm no pro in C++ and thus not very good in interpreting error messages) it seems like CALLBACK is not defined yet. Any idea on how to solve this?

Erik Brendel
  • 683
  • 9
  • 23

1 Answers1

1

I solved it somehow (not beautiful, but at least somehow):

I tried importing windef.h like stated in the link from @Louen. This removed the CALLBACK-Error, but created a new one (something about APIENTRY). So I searched for the error-solving part of windef.h and found it:

#ifndef CALLBACK
#if defined(_ARM_)
#define CALLBACK
#else
#define CALLBACK __stdcall
#endif
#endif

Then i just pasted this in my file (instead of including whole windef.h).

Community
  • 1
  • 1
Erik Brendel
  • 683
  • 9
  • 23