Kompilieren einer minimalen GLEW-Anwendung unter Cygwin
Betrachten wir das folgende Programm und versuchen Sie es unter Cygwin zu kompilieren:
#include <GL/glut.h>
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glLoadIdentity();
}
s kompiliert und läuft einwandfrei.-I/usr/include/opengl
scheint schrecklich wichtig zu sein.
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
Jetzt
#include <GL/glew.h> // from newest NVIDIA SDK
#include <GL/glut.h>
int main(int argc, char** argv)
{
glewInit();
glutInit(&argc, argv);
glLoadIdentity();
}
compiled by
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
schlägt fehl. Wie erstelle ich die zweite Anwendung?
ZuersEs gibt verschiedene Möglichkeiten, GLEW von NVIDIA SDK zu erstellen: von VS, von Cygwin, von Cygwin mit -D_WIN32. Ich habe auch versucht, Cygwin aus dem Original zu bauen.
VS Build gibt
/cygdrive/c/DOCUME~1/kelebron/LOCALS~1/Temp/ccErbecl.o:test.cpp:(.text+0xa8): undefined reference to `_glLoadIdentity'
collect2: ld returned 1 exit status
cygwin Builds geben viele
../lib/cygwin/glew32.lib(glew.o):glew.c:(.text+0x38e): undefined reference to `_glXGetProcAddress'
und cygwin mit -D_WIN32 kompiliert überhaupt nicht (ich war leicht motiviert vondieser Beitra).
ZweitEs scheint zwei Möglichkeiten zu geben, sich mit OpenGL zu verbinden
with -L / lib / w32api
oder mit -L / usr / X11R6 / lib -lX11 -lXi -lXmu
Aber die -L-Direktiven ändern nichts. Ich habe /usr/lib/w32api/libopengl32.a, aber möglicherweise fehlt die X11-Version (/ usr / X11R6 / lib / libGL?). Welches Paket sollte ich in Cygwin einbinden? Ich habe alles beginnend mit libGL installiert (nicht nur ...).