PDA

View Full Version : QTCreator + GLEW linking in Windows



Syndacate
23rd January 2012, 02:48
Hey,

Trying to get GLEW into Qt Creator and it's not working out well for me. I see there has been other threads posted about this issue, but I can't find one that has the answer.

Using: Qt Creator 2.0.1 with QT 4.7 (32) - attempting to use built-in OpenGL (2.1.2 according to OpenGL's GetString() functionality.

Trying to get GLEW in there, dl'ed "glew-1.7.0-win32" - put the .lib files in minGW/lib, the header files in minGW/include/GL, and the binaries/dll's in minGW/bin.

I am calling "glewInit();" after I establish an OpenGL context (should be after) but it's not even compiling. It has no trouble there, it has trouble when I try to use the function: "glGenBuffers((GLsizei)1, &a);" - this is part of the GLEW lib.

I modified my .pro file to have the following:

LIBS += -lglew32 -LC:\Qt\2010.05\mingw\lib\glew32.lib
QT += core gui opengl
INCLUDEPATH += C:\Qt\2010.05\mingw\include\GL

This makes it so that it does NOT error when it attempts to file glew32, so it *should* be linking correctly, if I change that to something like '-lGLEW' I get an error that it can't find the lib. Though if I remove the path to the actual library so it is simply:

LIBS += -lglew32
QT += core gui opengl
INCLUDEPATH += C:\Qt\2010.05\mingw\include\GL

It has the same error. Tried everything I can think of and everything I've found, error is always:

debug/cube.o: In function `DrawCube':

<project_path>/cube.c:21: undefined reference to `_imp____glewGenBuffers'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug/AnimationFramework_0.exe] Error 1

mingw32-make: Leaving directory `<project_path>'

mingw32-make: *** [debug] Error 2

The process "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project <project_name> (target: Desktop)
When executing build step 'Make'

The line on cube.c:21 is: glGenBuffers((GLsizei)1, &a);

Not sure where the name mangling is happening, but it seems like it's linking okay..kind of lost where to go. Not sure where the other function is coming from? Perhaps C++, I mean it is C++ and it's calling a C function, but I'd imagine it's okay in this context.

Any help is appreciated.

EDIT:
Just for a sanity check I gave the problematic function a cpp extension so it compiles to a cpp object, the error is the same (slightly) different, reads:

debug/cube.o: In function `Z8DrawCubev':

<project_path/cube.cpp:21: undefined reference to `_imp____glewGenBuffers'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug/<final_binary>] Error 1

mingw32-make: *** [debug] Error 2

The process "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project <project_name> (target: Desktop)
When executing build step 'Make'

The function it's referring to (where the error is) is just called DrawCube(), the prototype is: void DrawCube(), it isn't a member function nor does it have any special attributes.

EDIT2:
Now the top of my .pro file looks like this:

LIBS += -lglew32 -LC:\Qt\2010.05\mingw\bin -LC:\Qt\2010.05\mingw\lib
QT += core gui opengl
INCLUDEPATH += C:\Qt\2010.05\mingw\include\GL

Now it compiles, but glewInit() fails...that's typically a "I don't know where the hell to find this resource" issue..