Kompilieren minimal GLEW Anwendung unter Cygwin
Betrachten Sie das folgende Programm und versuche zu kompilieren unter Cygwin:
#include <GL/glut.h>
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glLoadIdentity();
}
Kompiliert und läuft einfach gut. -I/usr/include/opengl
scheint zu sein, sehr wichtig.
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
Nun,
#include <GL/glew.h> //from newest NVIDIA SDK
#include <GL/glut.h>
int main(int argc, char** argv)
{
glewInit();
glutInit(&argc, argv);
glLoadIdentity();
}
zusammengestellt von
g++ -I/usr/include/opengl -I../include/cygwin -L../lib/cygwin test.cpp -o test.exe -lglut32 -lglu32 -lglew32 -lopengl32
ausfällt.
Wie Baue ich die zweite Anwendung?
Ersten
Gibt es mehrere Möglichkeiten, um glew durch die von NVIDIA SDK: VS, von cygwin, von cygwin mit -D_WIN32. Ich habe auch versucht cygwin-build von original glew von der Quelle.
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 nicht kompiliert (und ich war ein wenig motiviert durch dieser Beitrag).
Zweiten
Scheint es zwei Wege, in Verbindung mit OpenGL
mit -L/lib/w32api
oder mit -L/usr/X11R6/lib -lX11 -lXi -lXmu
Aber die -L Richtlinien nichts ändern. Ich habe /usr/lib/w32api/libopengl32.ein, aber möglicherweise fehlt die X11-version (/usr/X11R6/lib/libGL?). Welches Paket sollte ich auch in Cygwin? Ich habe installiert alle beginnend mit libGL (nicht nur...).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches Problem vor einer Weile, und ich fand, dass es gibt zwei Möglichkeiten, um opengl-code kompilieren unter Cygwin.
Die ersten verbindungen gegen die native win32api Bibliotheken glut32 glu32 opengl32 (auch glui).
Diejenigen, die schon etwas älter sind:
glut v3.7.6
opengl v1.1
glui 2.11
Die zweite Möglichkeit verwendet die X11-Bibliotheken glut glu gl. Sie haben neuere version-Nummer in der header-Dateien (Beachten Sie, dass die Verwendung von GL-Erweiterungen erfordert >v1.2):
glut v4 (freeglut)
opengl v1.3
glext
...
So, die erste option verwenden comile mit: -I/usr/include/opengl
und link gegen: -lglut32 -lGLU32 -lOpenGL32
Die Verwendung der X11-version, kompiliert mit: -I/usr/include/ (das ist standardmäßig enthalten)
und der link mit: -lglut -lGLU -lGL (beachten Sie den Unterschied)
man könnte hinzufügen, die X11-Header und-Bibliotheken, aber ich denke, Ihre enthalten durch den GL ersetzt.
-I/usr/X11R6/include
-L/usr/X11R6/lib -lXmu -lXi -lXext -lX11
In der Cygwin-installer die folgenden Pakete werden Ihre Auswahlmöglichkeiten:
opengl -- gibt die win32-version von opengl, glut, glui
libglut-devel -- X11-version von glut (freeglut), wird diese auch auswählen, alle abhängigen Pakete. (glproto, libGL libGLU, libX11, ...)
Ich empfehle auch einschließlich der Xorg-server da müssen Sie einen X-server.
Hoffe, das hilft.
Nur um sicherzugehen, wir reden über die gleichen Probleme, hier ist die Botschaft, die ich verwendet, um zu bekommen.
Den folgenden Seiten geholfen, mich mit diesem Thema.
Im Grunde hatte ich zu definieren _STDCALL_SUPPORTED und _M_IX86 am Anfang der Datei und windows.h vor glew.h
Dann habe ich die Fahnen-lglut32 -lglew32
Wenn Sie wollen, um es auszuprobieren, hier ist die Quelle:
Beachten Sie, dass das Fenster, aus irgendeinem Grund benötigt man für die OpenGL2.0 testen.
Es klingt wie Sie wollen link gegen die native Win32-Bibliotheken anstelle von X11. Hinzufügen -L/lib/w32api. Andernfalls müssen Sie die link gegen die X11-Bibliotheken (-L/usr/X11R6/lib -lX11 -lXi -lXmu), um loszuwerden, der glX* linker Fehler..
Habe alle vorherigen Vorschlag für Sie arbeiten?
Ich bin nicht klar, ob Sie Probleme bei der Verknüpfung oder kompilieren von GLEW. Ich benutze GLEW über einschließlich der Quelle und haben durch die Verknüpfung von in der Vergangenheit.
Wenn du kompilieren willst, GLEW, dann stellen Sie sicher, dass Sie wählen rechts zip, als mit *nix-basierten code-Skripts möglicherweise nicht korrekt ausgeführt, unter windows (nicht sicher, von Cygwin).
GLEW sollte zunächst im header und die Verknüpfung um.