Wie krieg ich GD-Library auf Win zum laufen?



  • Hi,
    Irgendwie werd ich da net ganz schlau draus was wieso weshalb und warum da bei dir net tut.
    Probier mal das hier aus, da gibts ein kleines Video, wie man das mit DevC++ zum laufen bringt, vielleicht hilft dir ja das weiter.
    http://www.libgd.org/Devcppexample1

    mfg
    blut-lecker



  • So, ich hab jetz alles so gemacht, wie's in dem Video gezeigt wird.
    Des Beispiel hab ich auch geloadet und bei dem funktionierts. Aber bei meinem
    eigenen nicht. Soll ich mal den source Posten?



  • Hi,
    Jo poste mal den Code und die exakten Fehlermeldungen dazu auch.

    mfg
    blut-lecker



  • Dieser Source stammt von www.pronix.de
    Hab aber noch bisschen was verändert.
    Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include "gd.h"
    
    int main()
    {
        /*image initialisieren*/
        gdImagePtr image;
        FILE *png;
        int black, white, red, blue, yelow;
        /*Wir erzeugen ein Image mit 100x100 Pixel*/
        image=gdImageCreateTrueColor(100,100);
    
        /*Speicher für die Farben allozieren*/
        white=gdImageColorAllocate(image,  0,  0,  0); /*Weiß*/
        black=gdImageColorAllocate(image,255,255,255); /*Schwarz*/
        red  =gdImageColorAllocate(image,255,  0,  0); /*Rot*/
        blue =gdImageColorAllocate(image,  0,  0,255); /*Blau*/
        yelow=gdImageColorAllocate(image,255,255,  0); /*Gelb*/
    
        gdImageRectangle(image,  0,  0, 99, 99, black);
        gdImageRectangle(image,  1,  1, 49, 49, yelow);
        gdImageFill     (image, 25, 25, red);
        gdImageRectangle(image, 50,  1, 98, 49, yelow);
        gdImageFill     (image, 75, 25, blue);
        gdImageRectangle(image,  1, 50, 49, 98, yelow);
        gdImageFill     (image, 25, 75, blue);
        gdImageRectangle(image, 50, 50, 98, 98, yelow);
        gdImageFill     (image, 75, 75, red);
    
        png = fopen("bild1.png", "wb");
    
        gdImagePng(image,png);
    
        fclose(png);
        gdImageDestroy(image);
    
    return 0;
    }
    

    Fehlermeldungen:

    **
    ⚠ undefined reference to gdImageCreateTrueColor :warning: [Linker error] undefined reference togdImageColorAllocate'
    ⚠ [Linker error] undefined reference to gdImageRectangle' :warning: [Linker error] undefined reference togdImageFill'
    ⚠ [Linker error] undefined reference to gdImagePng' :warning: [Linker error] undefined reference togdImageDestroy'
    **

    Die jeweiligen Meldungen tauchen aber öfter auf, weil sie ja öfter
    im Progg verwendet werden. Hab das aber wegen Platz speren jetz weggelassen.



  • Hi,
    Also bei mir läufts ohne Probleme durch, allerdings mit Code::Blocks.
    Das einzige, was ich mir vorstellen könnte: wieso schreibst du: #include "gd.h"
    also bei mir meckert er da zwar nicht, aber schaut der Compiler da normalerweise nicht im Projektverzeichnis nach der Headerdatei?! Oder hat das einen bestimmten Grund, dass du nicht #include <gd.h>, schreibst?

    mfg
    blut-lecker



  • Die gd.h is ja auch im Projektverzeichnis drin.
    Also damit hat des jetz nix zu tun.



  • Hi,
    Ja, dann weiß ich au nimmer weiter, wieso das eine Proggi durchläuft und das andere nicht.

    mfg
    blut-lecker



  • Und aus dem Source wirst du sonst auch nich schlau?



  • Hi,
    Naja, das ist ja bis auf #include <stdlib.h> und #include "gd.h" der Code von Pronix, wenn ich das recht sehe. Und das Pronix Programm, aber auch dein Code funzen bei mir. Und da es bei dir ja mit dem anderen Code des Links von mir gefunzt hat, kann ich dir au net mehr sagen. Ich gehe davon aus, dass du die Schritte aus dem Video auch für diesen Code gemacht hast.
    Das einzige was ich noch sagen kann: Ich hab auch ewig gebraucht, bis ich das damals zum Laufen gebracht habe.

    Vielleicht weiß ja hier im Forum noch jemand Rat oder du suchst halt noch n bissl im I-Net rum.

    mfg
    blut-lecker



  • OK, trotzdem danke für deine Hilfe.
    Kann es vielleicht an meinen Compiler-Einstellungen liegen?



  • ich glaube es liegt daran, dass der linker nicht richtig eingestellt ist. Irdendwo in Dev C++ (kp wo habs lange nicht mehr verwendet) kannst du linkerflags setzten, und dort auch dann deine libraries dazulinken. Soweit ich weiß aber ohne endung, also nur -l(name) und kein .lib oder so, dann müsste es auch klappen.



  • Danke für den Super Tipp, Krux! 👍
    Jetz kann ich die Proggs kompilieren!
    Aber ich stehe vor dem nächsten Problem:
    Ich möchte bei einem anderen Source auf ein vorhandenes Pic
    etwas "draufmalen". Aber ich kann dieses nicht öffnen.
    Liegt es vielleicht an den Rechten oder so?


Anmelden zum Antworten