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


Log in to reply