GLUT installieren



  • Hallo,
    ich versuche jetzt seit Stunden, GLUT zum laufen zu bringen, aber es klappt nicht.
    Ich benutze den devcpp, habe alle notwendigen Dateien(libopengl32.a, glut32.lib, glut32.dll, glut.h) in die entsprechenden Ordner gepackt, in den Projekteinstellungen eingebunden und das Programm beginnt so:

    #include <windows.h>
    #include <GL/glut.h>
    

    (lasse ich die windows.h weg, gibt es einen ganz anderen Fehler...)

    Beim Kompilieren jedes mal folgende Errors:

    main.o(.text+0x1c):main.cpp: undefined reference to `__glutInitWithExit@12'
    main.o(.text+0x3d):main.cpp: undefined reference to `__glutCreateWindowWithExit@8'
    main.o(.text+0x5d):main.cpp: undefined reference to `__glutCreateMenuWithExit@8'
    main.o(.text+0x1ff):main.cpp: undefined reference to `glutInitDisplayMode@4'
    main.o(.text+0x216):main.cpp: undefined reference to `glutInitWindowSize@8'
    main.o(.text+0x22d):main.cpp: undefined reference to `glutInitWindowPosition@8'
    main.o(.text+0x250):main.cpp: undefined reference to `glutDisplayFunc@4'
    

    Habe lange gegoogelt, sämtliche Anleitungen gelesen, aber ich kriegs nicht hin 🙄
    Alle Files liegen am richtigen Platz, alle sind eingebunden 🙄

    Hoffe, ihr könnt mir weiterhelfen



  • Benutz nicht den DevC++. Hier steht auch irgendwo warum...



  • Benutz entweder Visual C++ Express, wxDevC++ oder CodeLite, Code::Blocks, Eclipse CDT oder sonst was aber schmeiss den DevC++ vom System bitte :).



  • Okay, ich werde es mal mit einer anderen IDE versuchen.
    Mal eine andere Frage:
    Ich habe hier seit Jahren das rote Open-GL Buch liegen, allerdings zu Version 2.0. Macht es überhaupt Sinn, sich die Basics noch mit diesem Buch beizubringen, oder muss ich beim Umsteigen auf aktuellere OpenGL-Versionen alles "alte" vergessen?
    Schmeiße ungern ein 50€-Buch weg... 😉



  • Naja, zum Grundlagen lernen isses okay.
    OpenGL3 bzw 4 unterscheidet sich halt grundlegend von OpenGL2. Du hast keinerlei fixed Functions mehr und keine vorgegebenen Matrizen etc. Und alles wird per Vertex Arrays (welche im VRAM liegen) und Shadern gezeichnet.



  • Ich vermute mal deine Header versuchen glut statisch zu linken (hast du GLUT_STATIC definiert oder so?) aber bei der .a handelt es sich um eine importlib.

    Ich kann dir aber trotzdem auch nur dazu raten von devcpp die Finger zu lassen (hoffnungslos veraltet). Stattdessen lieber: http://www.microsoft.com/express/Downloads/#2010-Visual-CPP 😉



  • Auch mit Visual C++ Express komme ich nicht weiter.
    Zwei Probleme treten auf:

    habe ich die glut.h im Ordner "include/GL" und binde dann per

    #include <GL/glut.h>
    

    ein, wird die Datei nicht gefunden.
    Lege ich die Datei direkt in den Include-Ordner und binde per

    #include <glut.h>
    

    ein, funktioniert das soweit.
    Weshalb nicht im Unterordner?

    Das zweite Problem ist dann, dass die glut32.lib "nicht geöffnet werden kann", obwohl sie im entsprechenden Ordner liegt. 🙄



  • Was ist der entsprechende Ordner in dem Fall? Hast Du diesen Ordner deinen includes hinzugefügt?
    In die Standard Installation sollte man nichts reinwerfen einfach so. Immer schlecht.
    Hier als bsp:
    http://h-3.abload.de/img/vs8iod.jpg
    Dort macht man zusätzliche include pfade bekannt. Genauso dann mit der Lib.



  • Funktioniert nicht. Habe jetzt einen extra Ordner für die Dateien angelegt, diesen wie auf deinem Bild inkludiert und mittels #include wird jetzt nichtmal mehr die glut.h gefunden.
    Ich versteh nicht, wieso man es den Leuten so schwer macht, mit dem Coden anzufangen *kopfschüttel*
    Ob Apache, MySQL oder andere umfangreiche Software - noch nie habe ich einen Tag damit verbringen müssen, ohne überhaupt etwas zum Laufen zu bekommen.



  • Funktioniert nicht ist halt eine Aussage, die so schwer zu interpretieren ist.
    Normal sollte das so funktionieren wenn du die Verzeichnisse korrekt angibst. Ansonsten stimmt da was auf deinem Rechner nicht.



  • Btw: Ich würd statt GLUT was anderes verwenden, z.B. GLFW. GLUT ist generell schon sehr alt und verträgt sich mit C++ rein prinzipiell nicht so gut.



  • dot schrieb:

    Btw: Ich würd statt GLUT was anderes verwenden, z.B. GLFW. GLUT ist generell schon sehr alt und verträgt sich mit C++ rein prinzipiell nicht so gut.

    Naja, also da muss ich doch widersprechen.
    Erstens hat sein Problem damit ja nun nichts zu tun.
    Und mit der Argumentation dürfte man viele Sachen nicht verwenden und OpenGL schon gar nicht.



  • Scorcher24 schrieb:

    Und mit der Argumentation dürfte man viele Sachen nicht verwenden und OpenGL schon gar nicht.

    Warum? Das Problem mit GLUT ist dass glutMainLoop() niemals returned sondern exit() verwendet, was dazu führt dass eben beim Beenden der Stack nicht unrolled und solche Sachen...nicht sehr schöner Stil und potentiell problematisch (hab schon Anwendungen gesehen die dank einer brisanten Kombination von GLUT und RAII ständig in einem leisen Crash enden). In OpenGL an sich sehe ich dagegen kein derartiges Problem...

    Und sein Problem hat nichts damit zu tun, das ist schon richtig. Ich wollte nur darauf hinweisen, bevor er jetzt noch weiter Zeit verschwendet GLUT richtig aufzusetzen kann er stattdessen ja auch einfach GLFW richtig aufsetzen, das Einrichten der libs wird natürlich nicht einfacher.



  • Inzwischen läuft es.
    Nun habe ich das Problem, dass ich eine einzige .exe will, die auch auf fremden Rechnern läuft. Ich will also nicht jedes mal die glut32.dll mitschicken müssen. Gibt es da eine (kostenlose) Möglichkeit? Kann man eine DLL(trotz des Namens) irgendwie statisch linken?



  • Liefer einfach die dll mit.



  • Ich kann schlecht jedem DAU erklären, er solle jetzt bitte die DLL in seinen System-Ordner in den Tiefen der Festplatte kopieren, unter Vista wegen Berechtigungen dann fünf mal auf "ja, ausführen" klicken usw.
    Gibt es keine Möglichkeit, mit einer einzigen .exe auszukommen?



  • Naja, du kannst die DLL auch im selben Verzeichnis wie die EXE lassen oder eine Art Installer mitliefern, der alles einrichtet.

    Gewissen Code musst du aus Lizenzgründen als Shared-Library mitliefern (LGPL).



  • Webster schrieb:

    Ich kann schlecht jedem DAU erklären, er solle jetzt bitte die DLL in seinen System-Ordner in den Tiefen der Festplatte kopieren, unter Vista wegen Berechtigungen dann fünf mal auf "ja, ausführen" klicken usw.
    Gibt es keine Möglichkeit, mit einer einzigen .exe auszukommen?

    Statisch linken.



  • Webster schrieb:

    Ich kann schlecht jedem DAU erklären, er solle jetzt bitte die DLL in seinen System-Ordner in den Tiefen der Festplatte kopieren, unter Vista wegen Berechtigungen dann fünf mal auf "ja, ausführen" klicken usw.
    Gibt es keine Möglichkeit, mit einer einzigen .exe auszukommen?

    Scheinbar bist du selbst nicht so fit in Sachen Betriebssystem, denn dann wüstest du, dass es reicht die .dll im Verzeichnis der .exe liegen zu lassen. Denn dort wird ebenfalls gesucht. Im Fall von GLUT sogar besser, denn falls da mal ein Programm dummerweise eine modifizierte GLUT im System hinterlässt, funktioniert dein Programm weiterhin.
    Oder du schreibst wie gesagt nen Installer:
    http://www.jrsoftware.org/isinfo.php


Anmelden zum Antworten