PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : glew mit mingw benutzen



barton4
26-03-2012, 11:14
Hi,
ich benutze in eclipse mingw-g++ als compiler und benötige GLEW um OpenGL Erweiterungen zu benutzen. Habe GLEW als statische Biliothek unter mingw gebaut und die entsprechenden Dateien in das mingw Verzeichnis kopiert:
glew.h, glxew.h, wglew.h nach "C:\MinGW\include\GL"
libglew32.a, libglew32.dll.a, libglew32mx.a, libglew32mx.dll.a nach "C:\MinGW\lib"

Zum Verwenden von GLEW habe ich folgendes in die Header Files eingefügt:


#define GLEW_STATIC
#include <GL/glew.h>


Beim Linken des Programmes kommt es jedoch zu Fehlern.


g++ -mthreads -Wl,-subsystem,windows -o debug\BallerburgClon.exe object_script.BallerburgClon.Debug -L"c:\Qt\4.8.0\lib" -lglu32 -lopengl32 -lgdi32 -luser32 -lmingw32 -lqtmaind -DGLEW_STATIC -LC:\MinGW\msys\1.0\home\martin\glew-1.7.0\glew-1.7.0\lib -lQtXmlPatternsd4 -lQtXmld4 -lQtOpenGLd4 -lQtGuid4 -lQtCored4
./debug\CPixelCanvas.o: In function `CPixelCanvas':
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:39: undefined reference to `__glewGenBuffers'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:40: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:41: undefined reference to `__glewBufferData'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:42: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:48: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:50: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:39: undefined reference to `__glewGenBuffers'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:40: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:41: undefined reference to `__glewBufferData'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:42: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:48: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:50: undefined reference to `__glewBindBuffer'
./debug\CPixelCanvas.o: In function `ZN4MyGL12CPixelCanvas9setPixelsERKSt6vectorINS_6t PixelESaIS2_EE':
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:74: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:75: undefined reference to `__glewMapBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:97: undefined reference to `__glewUnmapBuffer'
make[1]: Leaving directory `C:/Users/martin/workspace/BallerburgClon'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:98: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:104: undefined reference to `__glewBindBuffer'
C:\Users\martin\workspace\BallerburgClon/myGL/CPixelCanvas.cpp:106: undefined reference to `__glewBindBuffer'
collect2: ld gab 1 als Ende-Status zurück
make[1]: *** [debug\BallerburgClon.exe] Error 1
make: *** [debug] Error 2


Weis jemand wie ich das Programm ohne Fehler mit GLEW linken kann?

Grüße Martin :)

anda_skoa
26-03-2012, 11:32
Ich sehe in deinem Linkeraufruf keine Direktive zum Linken mit libglew32 oder libglew32mx

D.h. es fehlt vermutlich


-lglew32


eventuell auch


-lglew32mx


Ciao,
_

barton4
26-03-2012, 18:50
Voltreffer :D !!! Nun geht es endlich. Vielen Dank.

Was mich noch interessieren würde, wo steht das man "glew32" anhängen muss. Ich hatt nur mal -lGLEW probiert, das brachte aber nichts. Oder nimmt man immer -lDateiname ohne endung?

Grüße

anda_skoa
27-03-2012, 15:03
Ja, immer -l gefolgt vom Namen der Bibliotheksdatei, ohne Endung.

Also aus libglew32.a folgt -lglew32

Ciao,
_

syedshah20
05-12-2014, 11:27
Siehe meinen eingefügten Link.
Ein einfaches abfragen wie oben im Quelltext wird bei der Maus nichts bringen weil es immer false zurück geben wird.
Hier mußt du mit einer Schleife und XEvent Arbeiten.