Linker Error: Undefined symbol ...



  • Moin,

    bin nicht wirklich sehr fit in der Materie des Programmierens, benötige aber eine kleine grafische Ausgabe für ein Studienprojekt. Mein Problem ist jetzt folgendes, ich habe auf einem alten Rechner mit WIN98 borlandc.31 installiert und wollte ein kleinen Test mit einem Quellcode den ich im Netz gefunden habe ausprobieren um ein wenig mit der Bibliothek graphics.h zu experimentieren.

    #include<iostream.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<graphics.h>
    
    int main()
     {
     int graphdriver=DETECT,graphmode;
     initgraph(&graphdriver,&graphmode,"");
     setcolor(4);
     for(int x=100;x<540;x+=5)
      line(x,100,640-x,400);
     getch();
     return 0;
     }
    

    Er kompiliert den Spaß und meldet keine Fehler, wenn ich jetzt allerdings das Programm laufen lassen möchte gibt er mir folgende Fehlermeldungen:

    Linking TEST2.EXE:
    Linker Error: Undefined symbol _line in module TEST2.CPP
    Linker Error: Undefined symbol _setcolor in module TEST2.CPP
    Linker Error: Undefined symbol _initgraph in module TEST2.CPP

    Auch alle anderen Beispiele die ich vorgegeben bekomme wenn ich mir die Hilfe zu initgraph oder ähnlichem anschaue, lösen gleiche Fehlermeldungen aus.



  • Hallo

    Deine Frage hat nichts mit dem Borland C++ Builder zu tun.
    Die Fehlermeldung deutet darauf hin, das die von die verwendeten Mehtoden nicht in graphics.h (oder einer der anderen Header) enthalten sind. Da aber im Builder keine derartige Header vorhanden ist, kann ich dir dazu auch nichts sagen.
    Ich kann mich aber noch gut an diese Befehle aus meiner Pascal-Zeit erinnern, sind typisch Borland.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Compiler-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • wie wurde es nun im quelltext geschrieben: line oder _line?
    es gab damals beide varianten je nach compiler-lieferant -
    einige liessen auch beide zu. schau noch mal in die hilfe deines
    compilers.
    andere mögliche ursache du hast irgendwie die graphik-bibliothek
    nicht richtig angemeldet(in autoexec.bat oder einem entsprechendem
    batch-file den path ergänzen).
    ich vermute fast das die 2. mögliche ursache bei dir zutrifft.

    mfg f.-th.



  • schau mal ins manual, wie du dazulinkst:

    Sollte das Programm kompiliert werden, kann die EXE - Datei nur ausgeführt werden, wenn der
    Grafiktreiber EGAVGA.BGI im angegebenen Verzeichnis ist. Allein kann die Datei nicht ohne
    einen weiteren komplexen Schritt ausgeführt werden !!!
    Näheres zum Linken von Grafiktreibern steht im Borland C++ Reference-Manual.

    finde ich in einem alten pdf zur sache.
    und noch:

    Die Vorraussetzung für das Programm selbst, ist eine VGA - Grafik - Karte und die richtige
    Angabe des Pfades für den BGI - Treiber im Befehl „initgraph“.



  • du brauchst irgend so was( an dein system anpassen! ), meist in der
    autoexec.bat :

    SET BGI=C:\TC\BGI

    wobei C: das laufwerk wo deine BGI (borland graphik interface) ist;
    und TC dein path zum BGI-directory.

    mfg f.-th.



  • ist schon ein paar tage her, fällt mir erst so nach und nach wieder ein:
    es gab meist bei den damaligen compilern 2 möglichkeiten:
    1. per path auf die graphik-bibliothek zugreifen. -> bei mehreren exe mit
    graphik platzsparend, aber die bibliothek muss auf dem rechner mit der
    exe im zugriff-path sein.
    2. die grapkik-bibliothek mit in die exe linken. dann ist die exe etwa
    5 bis 10 mal grösser, aber die, z.b. BGI, muss nicht auf dem ausführenden
    rechner installiert sein.
    die neueren BGI's decken im regelfall die möglichkeiten der älteren ab.
    du brauchst also nur eine der letzten auf deinem rechner.

    mfg f.-th.



  • Nur mal der Form halber. Habe die BGI mit in das Verzeichnis vom Code gepackt und dann gings auch schon. Vielen Dank für die Hilfe. 👍


Anmelden zum Antworten