Diagramm darstellen; Fehler im Quellcode; Falsche Library???



  • Hallo liebe Forengemeinde,

    ich habe hier ein Programm, doch ich bekomme einfach nichts dargestellt geschweige denn das Programm ausgeführt.

    Ich benutze "dev C ++" und/oder "Code::blocks" als Compiler.

    Ich vermute das ich die entsprechende Library "#include <gd.h>" nicht installiert habe. Habe mir schon alles mögliche dazu aus dem Netz heruntergeladen, doch ich weiß nicht in welches Verzeichnis ich die Dateien kopieren/installieren muss. Oder ob es überhaupt daran liegt?

    Als Fehlermeldung im Compiler bekomme ich:

    obj\Debug\main.o||In function `main':|
    C:\Users\Christian\Desktop\GdP\123\main.c|14|undefined reference to `__imp__gdImageCreate@8'|
    C:\Users\Christian\Desktop\GdP\123\main.c|16|undefined reference to `__imp__gdImageColorAllocate@16'|
    C:\Users\Christian\Desktop\GdP\123\main.c|17|undefined reference to `__imp__gdImageColorAllocate@16'|
    C:\Users\Christian\Desktop\GdP\123\main.c|18|undefined reference to `__imp__gdImageColorAllocate@16'|
    C:\Users\Christian\Desktop\GdP\123\main.c|21|undefined reference to `__imp__gdImageFilledRectangle@24'|
    C:\Users\Christian\Desktop\GdP\123\main.c|23|undefined reference to `__imp__gdImageLine@24'|
    C:\Users\Christian\Desktop\GdP\123\main.c|25|undefined reference to `__imp__gdFontGetLarge@0'|
    C:\Users\Christian\Desktop\GdP\123\main.c|25|undefined reference to `__imp__gdImageString@24'|
    C:\Users\Christian\Desktop\GdP\123\main.c|27|undefined reference to `__imp__gdImageSetPixel@16'|
    C:\Users\Christian\Desktop\GdP\123\main.c|30|undefined reference to `__imp__gdImagePng@8'|
    C:\Users\Christian\Desktop\GdP\123\main.c|32|undefined reference to `__imp__gdImageDestroy@4'|
    ||=== Build finished: 11 errors, 0 warnings ===|
    

    Und hier Code des Programms:

    #include <stdio.h>
    #include <stdlib.h>
    #include <gd.h>
    #include <gdfontl.h>
    #include <string.h>
    /*globale Variablen*/
    gdImagePtr image;
    FILE *png;
    int red, white, gray;
    int x,y;
    int main()
    {
    /*Neues Image erstellen*/
    image = gdImageCreate(960, 600);
    if(image==NULL) { /*Fehler*/ exit(0); }
    white=gdImageColorAllocate(image, 255, 255, 255);
    red=gdImageColorAllocate(image, 255, 0, 0);
    gray=gdImageColorAllocate(image, 100, 100, 100);
    image->transparent = white;
    //gefuelltes Rechteck zeichnen
    gdImageFilledRectangle(image,0,0,50,50,red);//(obere linke Ecke=0,0; untere rechte Ecke 50,50)
    //Senkrechte Linie zeichnen
    gdImageLine(image, 10, 0, 10, 600, gray);
    //Text zeichnen
    gdImageString(image, gdFontGetLarge(), 200, 45, "Ich bin ein Text an der Stelle x=200 und y=45 !",red);
    //Punkt zeichnen
    gdImageSetPixel(image, 100,100, red);
    //den folgenden Teil nicht veraendern
    png = fopen("ergebnis.png", "wb");
    gdImagePng(image, png);
    fclose(png);
    gdImageDestroy(image);
    system("c:\\windows\\system32\\mspaint.exe ergebnis.png");
    return 0;
    }
    

    Hoffe jmd. kann mir einen Entscheidenen Tip geben...



  • Du mußt noch die "gd.lib" zu deinem Projekt hinzufügen (d.h. "dazulinken").
    Evtl. mußt du auch noch den "Library-Path" anpassen (d.h. den Pfad, wo du die GD-Library installiert hast).



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum ANSI C in das Forum Compiler- und IDE-Forum verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Th69 schrieb:

    Du mußt noch die "gd.lib" zu deinem Projekt hinzufügen (d.h. "dazulinken").
    Evtl. mußt du auch noch den "Library-Path" anpassen (d.h. den Pfad, wo du die GD-Library installiert hast).

    Genau da liegt mein Problem. Wie bzw. Wo mache ich das?

    Habe mir folgende Datei runtergeladen unter:

    http://www.libgd.org/Downloads

    Latest Version(2.0.35)

    Habe ich auf meiner Platte entpackt und nun? Muss ich das irgendwo in das Installationsverzeichnis des Compilers kopieren? Fragen über Fragen...



  • In die Compilerverzeichnisse kopieren ist eine Möglichkeit, aber das mag ich nicht so gern - du könntest deinem Betriebssystem mitteilen wo es auch noch die Dateien finden kann, auch diese Variante liegt mir nicht, aber manchmal muss es sein!

    Die meiner Meinung nach eleganteste Lösung du teilst deiner IDE Code::Blocks mit was sie alles berücksichtigen soll um den von dir bevorzugten Compiler/Linker anzusteuern.

    Hab mich mit dem gd - Zeug noch nicht beschäftigt - eventuell gibt es da Installationshilfen/ -scripte die dir die Intallation erleichtern, welchen Lösungsweg die nehmen musst du dann schauen und entsprechend reagieren.

    Es gibt auch noch andere Wege, die nach Rom führen 😉

    MfG f.-th.



  • Ich habe mir mal die http://www.libgd.org/releases/oldreleases/gd-2.0.34-win32.zip runtergeladen. Dort gibt es ein Unterverzeichnis namens 'lib' mit der Datei "bgd.lib" (wofür auch immer das 'b' steht? -).

    Und diese Datei mußt du dann in dein Projekt einbinden (evtl. auch noch die anderen lib-Dateien). Wie man das konkret mit Code::blocks macht weiß ich aber nicht, verwende selber nur das VS. Sollte aber genau so funktionieren wie bei anderen Source-Dateien auch (Datei hinzufügen / Add Files o.ä.).

    Wenn du dann das Projekt fehlerfrei kompilieren und linken kannst, dann benötigst du noch die entsprechende 'bgd.dll' aus dem 'bin'-Verzeichnis. Entweder diesen Pfad dann in die globale 'PATH'-Variable eintragen oder aber diese Datei in das selbe Verzeichnis, wo deine Exe-Datei ist, kopieren.



  • in C::B 8.02:
    Settings -
    Compiler and debugger
    und dann weiter es gibt da ja ein paar Möglichkeiten etwas einzutragen.

    MfG f.-th.



  • Th69 schrieb:

    Ich habe mir mal die http://www.libgd.org/releases/oldreleases/gd-2.0.34-win32.zip runtergeladen. Dort gibt es ein Unterverzeichnis namens 'lib' mit der Datei "bgd.lib" (wofür auch immer das 'b' steht? -).

    Und diese Datei mußt du dann in dein Projekt einbinden (evtl. auch noch die anderen lib-Dateien). Wie man das konkret mit Code::blocks macht weiß ich aber nicht, verwende selber nur das VS. Sollte aber genau so funktionieren wie bei anderen Source-Dateien auch (Datei hinzufügen / Add Files o.ä.).

    Wenn du dann das Projekt fehlerfrei kompilieren und linken kannst, dann benötigst du noch die entsprechende 'bgd.dll' aus dem 'bin'-Verzeichnis. Entweder diesen Pfad dann in die globale 'PATH'-Variable eintragen oder aber diese Datei in das selbe Verzeichnis, wo deine Exe-Datei ist, kopieren.

    Genau so!!! Vielen Lieben Dank!

    In Code::Blocks die bgd.lib folgendermaßen einfügen:

    "project" - "build options" -- dann den Reiter "Linker Settings" wählen -- "Add" -- "bgd.lib" auf lokalem Datenträger auswählen. Fertig!

    (Und natürlich noch die .dll Datei in den Projektordner!


Anmelden zum Antworten