"undefined reference to" bei graphics.h



  • Frohe Weihnachten erstmal :xmas1:

    Ich habe ein Tutorial gefunden das schon etwas älter aussieht wollte es aber trotzdem mal ausprobieren. http://209.85.129.132/search?q=cache:QyUuamJ8N6wJ:www.millin.de/lp-3-89990-123-1.pdf+%22susepress.de/de/download%22&cd=2&hl=de&ct=clnk&gl=de Ich bin bis zu dem Punkt "Graphikprogrammierung unter Linux" gekommen. Ich habe mir die Dateien die ich dafür brauche heruntergeladen. Wenn ich allerdings das erste Programm kompilieren will, zeigt er mir die ganzen Funktionen wie "undefined refernece to initgraph" etc. an. Ich habe ein wenig gegoogelt und herausgefunden, dass man eine lib einbinden muss. Ich habe die lib "liblcgi.a" eingebunden brachte aber keine Veränderung kann mir da einer helfen?

    PS: Ich benutze SUSE

    Mit freundlichen Grüßen



  • Hallo,
    hast du die Library, so wie es in dem Buch steht, auch installiert? Poste doch mal deinen Code, Fehlermeldung und Compiler-Aufruf.

    blan



  • Dann hast du die Bibliothek nicht richtig eingebunden

    Mit:
    -L<Pfad> -l<name>

    wobei <name> der Teil zwischen lib<name>.a/.so ist (ohne das lib und .a oder .so!) und kein Leerzeichen dazwischen!

    Oder das Symbol ist wirklich nicht in der Bibliothek definiert. Mit man: nm <bibliothek> kannst du dir anzeigen lassen, welche Symbole vorhanden sind (bei C++ kannst du mit c++filt die Symbole demangeln lassen).



  • Danke schon mal! Ich glaube ich muss noch weiter vorne anfangen. Ich habe die ganze Zeit mit g++ versucht zu kompilieren weil ich irgendwo gelesen habe das das auch ginge. Wenn ich aber wie vorgeschrieben mit lcc kompilieren will, gibt der "g++: $*: Datei oder Verzeichnis nicht gefunden" aus egal was ich dahinter schreibe. Liegt warscheinlich daran, das ich das mit der Installation nicht richtig gemacht habe, Hier ist die README

    Installation von LCGI
    =====================
    
    Installationsvoraussetzung
    --------------------------
    
    Die Graphikbibliothek LCGI setzt voraus, dass man die beiden Pakete
    
      qt und qt-devel aus der Serie xdev (ab SuSE 7.3)
    
    oder
    
      qtlib2 und qtdevel2 aus der Serie xdev (SuSE 7.2 oder früher)
    
    installiert hat. Sollte eines oder beide dieser Pakete
    auf Ihrem System nicht installiert sein,
    so müssen Sie diese zuerst installieren,
    bevor Sie die folgenden Installationsschritte durchführen.
    
    Installation
    ------------
    
    Um die Graphikbibliothek LCGI zu installieren, müssen Sie sich als
        root
    anmelden und anschließend in das Directory wechseln, indem sich das
    heruntergeladene Archiv lcgi-1.0.tgz befindet.
    
    Nun müssen Sie die folgenden Schritte durchführen:
    
    1. Entpacken des Archivs lcgi-1.0.tgz mit
         tar xzvf lcgi-1.0.tgz
    
    2. Wechseln in das Directory lcgi-1.0
         cd lcgi-1.0
    
    3. Setzen des Qt-Pfads (evtl.)
         In der Datei install_lcgi müssen sie nur dann den Pfad der
         Variablen QTDIR ändern, wenn sie keine Standardinstallation
         vorgenommen haben.
    
    4. Installieren von lcgi
         Hier haben sie zwei Möglichkeiten:
    
          1. Möglichkeit:
               Sie rufen folgendes auf:
                  ./install_lcgi
    
          oder
    
          2. Möglichkeit:
               Sie rufen folgendes auf:
                  rpm -hUv lcgi-1.0-9.suse-7.2-i386.rpm     bzw.
                  rpm -hUv lcgi-1.0-9.suse-7.3-i386.rpm
    
    5. Beenden der root-Sitzung mit
          exit
        und Anmelden unter Ihrem Login-Namen.
    
    6. Setzen der Variablen QTDIR und Definieren der Funktion in der Datei .bashrc
         Sie haben hier zwei Möglichkeiten:
    
         1. Möglichkeit:
              Tragen Sie in der Datei .bashrc in Ihrem Home-Directory
              die folgenden Zeilen ein:
    
                export QTDIR=/usr/lib/qt2
                function lcc() {  g++ -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/include/lcgi \
                                  -I$QTDIR/include \$* -L$QTDIR/lib -L/usr/X11R6/lib \
                                  -lXext -lm -llcgi -lqt -lXext -lX11; }
    
              Wenn Sie keine Standardinstallation vorgenommen haben,
              müssen Sie bei QTDIR= eben den Pfad angeben, in dem sich bei
              Ihnen Qt befindet.
    
         oder
    
         2. Möglichkeit (nur bei Standardinstallation):
              Rufen Sie im Directory lcgi-1.0 das folgende Programm auf:
    
                lcgiconfig
    
             Dieses Programm trägt automatisch am Ende Ihrer .bashrc die beiden Zeilen
             von der 1. Möglichkeit ein.
    
    7. Schließen Sie dann dieses Fenster und öffnen Sie es erneut,
       denn bei jedem Öffnen eines Terminalfensters wird automatisch der
       Inhalt der Datei .bashrc (im Home-Directory) gelesen.                                     
    
    Benutzung von LCGI
    ==================
    
    Inkludieren von <graphics.h>
    ----------------------------
    
    Da die Graphikfunktionen in der Headerdatei graphics.h deklariert sind, sollte immer
    
       #include <graphics.h>
    
    angegeben werden, wenn man von diesen Funktionen in seinem Programm Gebrauch macht.
    
    Angabe von main() mit Parametern
    --------------------------------
    
    Wenn Sie in Ihrem Programm LCGI-Routinen aufrufen, müssen Sie statt
    
       int main(void)
    
    immer folgendes
    
       int main( int argc, char *argv[] )
    
    angeben.
    
    Kompilieren und Linken von Graphikprogrammen (auf der Kommandozeile)
    --------------------------------------------------------------------
    
    Wenn Sie ein Programm erstellt haben, das Routinen aus diesem Kapitel aufruft,
    müssen Sie dieses immer mit dem mitgelieferten Kommando lcc statt gcc bzw. cc
    kompilieren und linken.
    
    Wenn Sie z.B. ein Programm polygon.c entwurfen haben und dieses nun kompilieren wollen,
    müssen Sie z.B. folgendes aufrufen:
    
       lcc -o polygon polygon.c
    
    Das Kommando lcc bietet die gleichen Optionen an wie das Kommando gcc bzw. cc.                                                                                                    
    Rufen Sie danach zum Testen 
    
        polygon  bzw. 
        ./polygon  (wenn sie als root angemeldet sind)
    
    auf.
    
    Kompilieren und Linken von Graphikprogrammen (mit xwpe)
    -------------------------------------------------------
    
    Wenn Sie mit der integrierten Environment xwpe arbeiten,
    müssen Sie unter dem Menüpunkt
    
       Options-->Compiler-->C
    
    die folgenden Einträge vornehmen:
    
      Compiler:         g++
      ComPiler-Options: -g -I/usr/include/lcgi -I/usr/lib/qt2/include
      Loader-Options:   -L/usr/lib/qt2/lib -L/usr/lib -L/usr/X11R6/lib -lXext -lm -llcgi -lqt -lXext -lX11
      LAnguage:         C
      File-Postfix:     .c
    
    Hinweis:
    
    Sollten Sie für QTDIR einen anderen Pfad als /usr/lib/qt2 eingestellt haben,
    müssen Sie diesen bei den ComPiler- und Loader-Options anstelle von /usr/lib/qt2 angeben.
    
    Die so eingestellten Optionen müssen Sie dann über den Menüeintrag
    
       Options-->Save Options
    
    sichern.
    

    Kann mir vielleicht einer in seinen eigenen Worten sagen was man hier genau machen muss?



  • ich denke es wäre besser wenn du uns konkret sagst was du nicht verstehst, denn ich glaub kaum das dir das einer von deutsch in deutsch 😮 übersetzt...


Anmelden zum Antworten