PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : GLUT Linker Probleme


GloomY
2005-06-19, 17:41:51
Mein Linker spuckt mir immer das hier aus:
C:\Temp/ccGxELfb.o(.text+0x1c):geee_el.c: undefined reference to `__glutInitWithExit@12'
C:\Temp/ccGxELfb.o(.text+0x3c):geee_el.c: undefined reference to `__glutCreateWindowWithExit@8'
C:\Temp/ccGxELfb.o(.text+0x5c):geee_el.c: undefined reference to `__glutCreateMenuWithExit@8'
C:\Temp/ccGxELfb.o(.text+0x1c9):geee_el.c: undefined reference to `glutSwapBuffers@0'
C:\Temp/ccGxELfb.o(.text+0x26b):geee_el.c: undefined reference to `glutInitDisplayMode@4'
C:\Temp/ccGxELfb.o(.text+0x289):geee_el.c: undefined reference to `glutDisplayFunc@4'
C:\Temp/ccGxELfb.o(.text+0x296):geee_el.c: undefined reference to `glutMainLoop@0'
collect2: ld returned 1 exit statusDas sind alle GLUT Aufrufe, die ich in meinem kleinen Test-Progrämmchen benutze.

Ich habe wie hier (http://www.opengl.org/resources/faq/technical/gettingstarted.htm#0010) beschrieben alle nötigen Dateien in den richtigen Verzeichnissen. Googeln hat auch nicht viel genützt, denn so ziemlich alle Treffer sagen, dass die glut32.lib mitgelinkt werden muss. Das habe ich aber gemacht, wie man unschwer erkennen kann. Die Dateien sind auch im richtigen Verzeichnis.

Ich benutze Dev-C++ mit dem MingW Port des GCCs. Das Kompilieren macht im Übrigen auch keine Probleme, nur das Linken schlägt eben fehl. :|

zeckensack
2005-06-19, 17:51:01
Versuch's mal mit der Compiler-Option -fleading-underscore.
Zum Nachlesen, was das macht. (http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Code-Gen-Options.html#Code-Gen-Options)
Es sieht nämlich so aus, als ob in jedem importierten Symbol einfach ein Unterstrich fehlt. In libglut32.a finde ich zB den Export "_glutSwapBuffers@0".

Extrem elegant ist das nicht gerade, aber ich denke es wird funzen. Das muss auch irgendwie anders gehen, aber da bin ich auch überfragt.

GloomY
2005-06-19, 18:29:51
Versuch's mal mit der Compiler-Option -fleading-underscore.
Zum Nachlesen, was das macht. (http://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Code-Gen-Options.html#Code-Gen-Options)
Es sieht nämlich so aus, als ob in jedem importierten Symbol einfach ein Unterstrich fehlt. In libglut32.a finde ich zB den Export "_glutSwapBuffers@0".

Extrem elegant ist das nicht gerade, aber ich denke es wird funzen. Das muss auch irgendwie anders gehen, aber da bin ich auch überfragt.Das hat leider gar nichts gebracht. Der Fehler ist immer noch der gleiche. :(

Ich habe bisher nur die vorkompilierte DLL von GLUT gezogen und den Source bisher nicht angeschaut. Ist die libglut32.a im Source enthalten?

Ich habe gerade mal den Lcc-Compiler ausprobiert und der spuckt mir als Fehlermeldung noch ein bisschen mehr aus. Anscheinend hat es irgendwas mit der glu32.lib zu tun:

zeckensack
2005-06-19, 20:20:06
Von wegen lcc, schau nochmal genau auf den Build-Output.
Du hast glu32 doppelt angegeben, aber dafür glut32 vergessen.

@originales Problem,
schonmal geschaut was passiert, wenn du nur glut32 dazulinkst?
(dh glu32 und opengl32 weglassen, Systemlibs natürlich drinlassen)

GloomY
2005-06-20, 17:12:31
Von wegen lcc, schau nochmal genau auf den Build-Output.
Du hast glu32 doppelt angegeben, aber dafür glut32 vergessen.Das komische ist, dass es selbst mit glut32.lib genau das gleiche ist. Glu32 fügt der Linker des LCC jedes Mal wieder an die Liste der einzubindenden Dateien hinzu (weil er meint, dass die fehlenden Funktionen dort drin seien; Woher weiss er das eigentlich???). Wenn ich also fünfmal probiert habe, steht da 5 mal die glu32.lib drin. Entsprechend gibt es vier mal die Warunung, dass diese doppelt vorhanden sei und dass sie ignoriert würde.

edit: Vielleicht liegt das Problem darin, dass der Linker in der falschen lib-Datei sucht? In glut32.lib sollten die GLUT-Funktionen ja drin sein, oder? ;)

btw: Was macht eigentlich dieses GLU? Ich verwende keinerlei Aufrufe davon (fangen ja alle mit "glu..." an).
@originales Problem,
schonmal geschaut was passiert, wenn du nur glut32 dazulinkst?
(dh glu32 und opengl32 weglassen, Systemlibs natürlich drinlassen)Hab' ich auch schon probiert. Dann meckert der Linker, dass jeder OpenGl-Aufruf nicht bekannt sei. Also die Opengl32.lib muss schon dazu.

Reine OpenGL Anwendungen gehen auch. Ich habe mal den Tutorial-Code von einer Webseite kopiert, wobei nur die WinAPI und OpenGL verwendet wurde. Das ging problemlos. :| Nur bin ich noch nicht so fähig mit reinem OpenGL zu proggen. GLUT ist ja eigentlich so schön einfach und damit für mich als Anfänger bestens geeignet... :)

Da OpenGL an sich funktioniert, liegt es also irgendwie schon an GLUT. Ich habe von der offiziellen Seite (http://www.xmission.com/~nate/glut.htm) die Version 3.6.7 gezogen. Bei den beiden Compilern waren jeweils schon Dateien dabei (glut.h etc.), aber selbst ein Austauschen mit den heruntergeladenen hat nichts gebracht.

Ich war gestern so frustriert, dass ich das Thema erstmal hab sein lassen. Ich poste heute abend mal, was ich in der Zwischenzeit herausbekommen / womit ich rumprobiert habe.

Vedek Bareil
2005-06-21, 10:59:43
@Gloomy: hast du schonmal in Tutorials, Tools, Dokumentation (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=2310766#post2310766) geguckt? Ich hatte da nämlich ein ähnliches Problem gehabt.

GloomY
2005-06-21, 14:53:40
@Gloomy: hast du schonmal in Tutorials, Tools, Dokumentation (http://www.forum-3dcenter.org/vbulletin/showthread.php?p=2310766#post2310766) geguckt? Ich hatte da nämlich ein ähnliches Problem gehabt.OMG, es geeeeeeeeht!!! Das ist ja echt mal der Hammer...

Vielen Dank Vedek =) Du hast mir sehr weitergeholfen. Mein Gott, wie lange habe ich hieran herumprobiert...

Dank natürlich auch an Zeckensack für dessen Bemühungen. :)