Unable to open include file 'GL/glut.h'



  • Hallo,

    in einer Vorlesung, sollten wir ein Programm nachprogrammieren, was zwar eher mit zusammenkopieren zutun hatte, aber naja.
    Die Sache war die, dass ich der Einzige mit einem Laptop war und das Programm anscheinend die Standard-Dateien von OpenGL nutzt und die normal nicht eingerichtet sind wenn man Borland Builder 6.0 installiert!

    Da sich mein Prof geweigert hat, mir dabei zu helfen, da das Programm eigentlich von einem anderen Prof stammt, diese fehlenden Bibliotheken/Header-Dateien (?) zum Builder hinzuzufügen und ich im Netz mich mittlerweile dumm und dämlich nach einer angemessen Guide gesucht habe, blieb mir nun nichts anderes übrig als euch hier zu fragen.

    Da ich das Programm zu Hause nachvollziehen und nachprogrammieren möchte, brauche ich ja die Dateien, die ich besitze und somit irgendwo, irngewie im Borland Builder hinzufügen muss.

    Der folgende Abschnitt zeigt den Code wo der Fehler (markiert mit //*) auftritt:

    //...
    
    #include <stdlib.h>
    #include <iostream.h>
    #include <math.h>
    
    #include <GL/glut.h> //*
    
    // Umgebungsoptionen fuer WIN32 und Borland Bibliotheken
    #ifdef WIN32
    //...
    

    Der Fehler lautet : Unable to open include file 'GL/glut.h'

    Eigentlich leicht "abzustellen" aber da ich keine Erfahrung bisher mit OpenGL habe und importierbaren Dateien für Borland, fällt mir das doch relativ schwer!

    Ich würde mich über Hilfe freuen 😉
    Liebe Grüße.

    * aktuelle Borland Builder C++ Version: 6.0



  • Die GLUT ist das GL Utility und wird nicht beim Compiler mitgeliefert.
    Such einfach im Netz nach der Lib für Borland 6 :P.

    Und da findet man sowas:

    From what I understand, Borland supplies a utility that
    converts Microsoft Visual C++ .libs into Borland compatible
    files. Therefore, the best method for Borland users is
    probably to get the precompiled versions of the library and
    convert the library. To create an import library for Borland
    from the DLLs, use the following command (from a command prompt):
    IMPLIB glut32.lib glut32.dll
    If IMPLIB crashes when called this way, try
    IMPLIB glut32.lib glut32.def
    using the glut32.def file in this distribution.

    http://www.xmission.com/~nate/glut/README-win32.txt
    D.h. saug dir die GLUT für VC++ und benutz diese Anleitung. Und dann kopierstes halt in die entsprechenden Ordner. Siehe Compiler-Doku für ne Anleitung.
    rya



  • Also ich habe es soweit hinbekommen, Problem ist bisher nur das erstellen der DLL, dass habe ich in deiner URL-Angabe nachgelesen, funktioniert allerdings nicht, Fehleroutput:

    Borland Implib Version 3.0.22 Copyright (c) 1991, 2000 Inprise Corporation
    Error : unable to open file
    

    Spielt das Vista eine Rolle ?
    Habe CMD als Admin geöffnet, funktioniert dennoch nicht ...

    glut32.def funktioniert leider auch nicht wieder die glut32.dll ... gleicher angezeigter Fehler!

    LG

    //EDIT:

    Mhmm merke gerade das ich mich verlesen habe ~~
    Die DLL erstellt man laut der Anleitung mit Microsoft Developer Studio 6 ?
    Ist damit Visual Studio gemeint ?
    Wäre das auch mit Borland Builder mögl. ohne ein anderes Programm ?



  • Lad dir ein Binärpaket runter, nicht die Sourcen... da is dann ne .dll dabei.
    Oder benutz doch einfach den GCC, da gibts auch nen Paket für.... Wenns net zu viel umstände macht. Weiss ja nicht ob du auf den Borland angewiesen bist. Aber mit Implib musses gehen...
    Hast du mal probiert die Lib einfach so zu verwenden?
    rya.



  • Habs endlich hinbekommen, dein Stichwort mit den Binaries hat nur gefehlt, hätte sonst ewig gebraucht um mal die GLUT32.DLL zu finden ~~

    (Zu deiner frage nochmal, bin leider Borland angewiesen, werde das allerdings auch noch mit Visual Studio 2005 C++ testen, dass habe ich mir extra zugelegt, aber da scheint das mit dem GLUT einbinden komplizierter zu sein)

    So also folgendes wer mal das gleiche Problem hat:

    * GLUT.lib, GLUT32.lib und OPENGL32.lib kommen ins ../Borland/CBuilder6/Include/GL - Verzeichnis

    * GLUT32.DLL kommt in das aktuelle Verzeichnis eures Projekts dann dürfte es eigentlich funktionieren (so funktionierte es zumindest bei mir ...)

    DOWNLOAD zu GLUT findet ihr HIER

    Ich hoffe ich kann da jemanden mit helfen!

    Was mich noch interessieren würde:
    Kann man die DLL so einbinden, dass man die nicht immer in jedem Projekt-Verzeichnis benötigt ?

    Grüße und danke nochmal für deine Hilfe 😉



  • .lib nach /include? Ähm nein. Es ist btw scheiss egal wo die liegt :D. Du musst es deinem Compiler nur sagen.
    Du solltest dich am besten mal mit den grundsätzlichen Dateien eines Computers beschäftigen. V.a. da du nicht weisst, wie man die .dll Systemweit verfügbar macht.
    Stichwort: Systempfade. Kopier die DLL-Datei nach C:\Windows und sie ist im Systempfad und wird immer gefunden.
    Und die .dll selber brauchst du nur zum ausführen, weil da die Funktionen drin stecken.

    Wie arbeitet nun dein Compiler?
    Er liest erstmal deinen Sourcecode. Jede Funktion und Variable muss irgendwo definiert sein. Dafür gibts die .h Dateien. Da stehen alle Funktionen drin, die verfügbar sind. Bekommst du in diesem Schritt einen Fehler beim erstellen, fehlt entweder ein #include oder es ist ein Syntaxfehler. Ergo, im Code passt was nicht.

    Die Zwischenschritte wie .asm-Source erstellen etc lass ich mal weg - der nächste Schritt ist das Linken. Dazu brauchst die .lib Dateien. Der Linker muss wissen, wo als bsp die Funktion fooGlutBar verfügbar ist. Das steht in der .lib. Da steht dann als Bsp. drin: "Diese Funktion ist in der .dll glut.dll". Also schreibt der Linker in die .exe: "Funktion in glut.dll, Windows lad die bitte, damit das Programm arbeiten kann".
    Bekommst du hier einen Fehler, fehlt eine .lib oder du hast so sachen angestellt, wie eine Funktion bekannt gemacht und sie nie implementiert.
    Beispiel:

    int myUnresolvedExternal();
    
    int main()
    { 
        int a = myUnresolvedExternal();
        return a;
    }
    

    Das Beispiel kompiliert, aber linkt nicht. Warum? Weil die Funktion myUnresoledExternal nie implementiert wurde, es gibt also keine IMPLEMENTATION nur eine DEFINITION.

    werde das allerdings auch noch mit Visual Studio 2005 C++ testen, dass habe ich mir extra zugelegt, aber da scheint das mit dem GLUT einbinden komplizierter zu sein

    Ähm... nein. VC++: Easy to use, hard to master ;). Aber da kann man alle Dateien einfach ins Projekt ziehen, sogar .lib Dateien und der sortiert das aus... Also der is echt "Idiotensicher" :P.
    Ich hoffe, ich konnte dir hier weiterhelfen.
    rya.


Anmelden zum Antworten