Freeglut und Glew installieren



  • Hallo!
    Ich habe früher mit Java und LWJGL gearbeitet und habe deshalb auch schon Erfahrung mit OpenGL gemacht. Nun wollte ich aus Performance Gründen C++ benutzen - mit Freeglut und Glew. Ich habe aber Probleme die in meinem Visual C++-Projekt einzubinden. Ich habe sehr viele Tutorials durchgelesen, wobei aber fast alle unterschiedliche Lösungswege haben. In Java musste ich einfach LWJGL im gleichen Ordner wie das Projekt haben und das war's. Gibt es denn keine ganz so komplizierte Methode um Freeglut und Glew in meinem Projekt einzubinden (Ich benutze Windows 7)?



  • Kapichu schrieb:

    Gibt es denn keine ganz so komplizierte Methode um Freeglut und Glew in meinem Projekt einzubinden (Ich benutze Windows 7)?

    Nein (willkommen bei C++! 🕶 ).
    Zum einen muss der Pfad zu den include Dateien bekannt sein, damit der Präprozessor weiß, wo er die Header findet. Und dann muss der Linker die Definitionen finden, die zu den Deklarationen im Header gehören, dazu braucht er die *.lib Dateien der Bibliotheken.

    PS: Du sagst, du kommst von Java. Ich hoffe sehr, dass du C++ vorher gelernt hast. Das sind zwei verschiedene Sprachen! Der C++-Weg ist ganz anders als der Java-Weg. Z.B. nutzt man in C++ fast nie new.



  • Also C++ hab ich gelernt, klar (neben der Syntax haben Java und C++ nicht sehr viel gemeinsam...), ich habe vorher mit der Konsole gearbeitet. Und dass der Compiler wissen muss, wo die Header liegen, ist ja logisch. Aber ich habe es noch nicht geschafft, VC++ die Libs und DLLs zu übergeben. Nur mal so nebenbei: ist Visual C++ überhaupt eine gute IDE, ohne Windows-Programme schreiben zu wollen?



  • Also....

    Das mit den Dateien einbinden ist eigentlich ganz einfach, man muss nur wissen wie....
    Ich selbst hab ca. 3 Wochen gebraucht bis ichs gerafft hab -.-

    Ok, mach folgendes (man muss sagen es is vllt. nicht die beste Lösung):
    1.) Geh in Documents\Visual Studio 2010\Projects[dein Projektname]
    2.) Erstelle einen Ordner includes (oder wie du ihn nennst)
    3.) in dem Ordner erstellst du einen Ordner GL (diesmal muss er so heißen)
    4.) du ziehst alle Header und Lib Dateien von Freeglut in den GL Ordner
    5.) du ziehst die Dateien glew, wglew und glxew in den GL Ordner
    6.) alles andere in den includes Ordner (direkt)
    7.) du gibts im Projekt als Dateipfad den include Ordner (nich GL) an
    8.) du includierst im Programm glew.h, GL\freeglut.h und GL\glut.h

    das dürfte es gewesen sein...

    ps. bitte korrigiert mich fals ich falsch liege



  • Nathan schrieb:

    Z.B. nutzt man in C++ fast nie new.

    wat



  • Kenner des C++ schrieb:

    Nathan schrieb:

    Z.B. nutzt man in C++ fast nie new.

    wat

    std::make_shared



  • Vertexwahn schrieb:

    Kenner des C++ schrieb:

    Nathan schrieb:

    Z.B. nutzt man in C++ fast nie new.

    wat

    std::make_shared

    Nee, in diesem Fall spielte ich eher auf den Fakt an, dass Java-Programmierer gerne Objekte, die eigentlich auf dem Stack sein sollten, via new erzeugen, weil man das in Java auch so macht.
    Natürlich braucht man ab und zu new, aber wenn, dann nur in Smartpointern.



  • Woran scheitert es genau? Gib die Include- und Bibliotheks-Pfade unter den Projekteigenschaften in VS an. DLLs selbst werden erst zur Laufzeit geladen, dazu musst du eine Importbibliothek (.lib-Datei) linken.

    Diese Prozesse werden z.B. auf MSDN im Detail beschrieben. Lies dir sie in Ruhe durch, die Kenntnis statischer und dynamischer Bibliotheken und die genauen Abläufe beim Kompilieren, Linken und Laden sind sehr zentral.

    Kapichu schrieb:

    Nur mal so nebenbei: ist Visual C++ überhaupt eine gute IDE, ohne Windows-Programme schreiben zu wollen?

    Ja, ich persönlich halte Visual Studio sogar für die beste C++-IDE. Übrigens, mit Visual C++ wird oft der Compiler (im Gegensatz zur IDE) bezeichnet; die Versionsnummern unterscheiden sich ebenfalls.

    Kenner des C++ schrieb:

    Nathan schrieb:

    Z.B. nutzt man in C++ fast nie new.

    wat

    Zumindest wenn man neuere Standards benutzt. Mit C++14 und std::make_unique wird es nur noch sehr wenige Fälle geben, wo new Sinn macht. Aber auch schon vorher macht man etwas falsch, wenn man dauernd manuell Speicher verwaltet (Stichwort RAII).


Anmelden zum Antworten