libgd zum Laufen kriegen



  • libgd schrieb:

    Mein größtes Problem ist aber glaube ich, dass ich keine Dokumentation zu dieser Lib gefunden habe.

    Es gab mal Doku auf libgd.org, die Seite war aber einige Zeit nicht zu erreichen (weil Domain abgelaufen laut Hinweis) und jetzt wird auf github umgeleitet wo in der Tat keine Doku ist...

    Libgd 2.0irgendwas gibt es fertig kompiliert im Netz, ich finde leider nicht mehr wo genau... Ich geh mal suchen.





  • libgd schrieb:

    Eine Datei namens "INSTALLATION" liegt zwar drin (hat keine Dateiendung?), aber was da drin steht ist für mich sehr unverständlich. Zumal das ganze im Editor alles komplett unformartiert ist und daher extrem anstengend zu lesen.

    Das deutet auf eine Textdatei für Linux hin.
    Die hat nur ein \n als Zeilenende und kein \r\n wie unter Windows.

    Nimm einen vernünftigen Editor, der mit den verschiedenen Textmodi umgehen kann.



  • Okay, das hat ja schon mal Spaß gemacht, weil es funktioniert hat mit der ReadMe. Darauf bin ich echt nicht gekommen, im entsprechenden Verzeichnis einfach mal die ReadMe zu öffnen (warum eigentlich nicht? ^^).
    Danke auch für den Link zu der alten Version, da ist ja wenigstens eine Doku mit bei (wenn halt auch veraltet, aber es scheint sich an den Funktionen ja nicht viel für mich als Nutzer geändert zu haben).

    Allerdings gibt er mir beim Check über nmake aus, dass einige Dateien nicht gefunden wurden. Ich vermute aber, dass diese wohl nicht wichtig sind, da die *.lib-Dateien erstellt wurden. Hier trotzdem mal der Auswurf (damit ihr gleich aufschreien könnt, um mich eines Besseren zu belehren, falls vllt. doch was wichtiges "verloren" gegangen ist):

    Microsoft (R) Program Maintenance Utility, Version 12.00.21005.1
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
    gd_gd2.c
    src\gd_gd2.c(30) : fatal error C1083: Datei (Include) kann nicht geöffnet werden
    : "zlib.h": No such file or directory
    gd_jpeg.c
    src\gd_jpeg.c(52) : fatal error C1083: Datei (Include) kann nicht geöffnet werde
    n: "jpeglib.h": No such file or directory
    gd_png.c
    src\gd_png.c(17) : fatal error C1083: Datei (Include) kann nicht geöffnet werden
    : "png.h": No such file or directory
    gdft.c
    src\gdft.c(153) : fatal error C1083: Datei (Include) kann nicht geöffnet werden:
     "ft2build.h": No such file or directory
    gdkanji.c
    src\gdkanji.c(21) : fatal error C1083: Datei (Include) kann nicht geöffnet werde
    n: "iconv.h": No such file or directory
    Code wird generiert...
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 12.0
    \VC\BIN\amd64\cl.EXE"": Rückgabe-Code "0x2"
    

    Dank dem Verweis auf die readme.md, habe ich die Dateien direkt per GitHub geöffnet, da hat sich das mit dem Editor also erstmal erledigt. Aber danke für den Hinweis, dass das wohl für Linux bestimmt ist, dann weiß ich da für später schon mal Bescheid.

    Ich konnte die Libs zwar noch nicht testen, werde mich aber dann melden, falls doch noch Probleme auftreten.

    Vielen Dank bis hierhin!



  • In dem Link von passant steht unter Download:

    Gd for Windows schrieb:

    Developer files (header files and libraries) from other packages are however not included; so if you wish to develop your own applications, you must separately install the required packages.

    Da musst du noch ein paar andere Sachen downloaden.
    Möglicherweise kannst du auch einige Optionen in einem Config-File abwählen.



  • Moment Moment... Ich hab dir einen Link auf "fertige" lib+dll+h gegeben, willst du die Sache trotzdem kompilieren? Nötig ist das - es sei denn du brauchst die aktuelleste Version - jetzt nämlich nicht mehr. Runterladen+installieren und funktioniert, BTDT. Beispielcode auf Anfrage.



  • Ich musste erstmal glücklicherweise nichts weiter downloaden (bis auf die Dependcies-File für Windows, aber darauf wird ja explizit hingewiesen). Tatsächlich habe ich es soweit zum Laufen bekommen, dass mir eine DLL + .lib erstellt wird, allerdings meckert mir nmake beim check rum, dass die jpeg-lib veraltet ist (alle Zeilen, die mit "Passed" gekennzeichnet waren, habe ich weggelassen):

    Microsoft (R) Program Maintenance Utility, Version 12.00.21005.1
    Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
    
    tests\freetype\bug00132.c:35: Total pixels changed: 61 with a maximum channel di
    fference of 0.
    Reference image and destination differ
    GD Error: gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library
    version: library is 62, caller expects 90GD Error: gd-jpeg: JPEG library reports
     unrecoverable error: Wrong JPEG library version: library is 62, caller expects
    90tests\gdimagefile\gdnametest.c:127: Failed to load C:\libgd\tests/gdimagefile/
    img.jpg
    GD Error: gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library
    version: library is 62, caller expects 90GD Error: gd-jpeg: JPEG library reports
     unrecoverable error: Wrong JPEG library version: library is 62, caller expects
    90tests\gdimagefile\gdnametest.c:127: Failed to load C:\libgd\tests/gdimagefile/
    img.jpeg
    Skipping test for 'img-ref.xbm'.  FIX THIS!
    Skipping test for 'img-ref.tga'.  FIX THIS!
    Skipping test for 'img.webp'.  FIX THIS!
    Skipping test for 'img.tiff'.  FIX THIS!
    GD Error: gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library
    version: library is 62, caller expects 90tests\gdimagerotate\bug00067.c:32: load
    ing C:\libgd\tests/gdimagerotate/remirh128.jpg failed.
    test: gdimagerotate\bug00067..........................................Failed
    GD Error: gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library
    version: library is 62, caller expects 90GD Error: gd-jpeg: JPEG library reports
     unrecoverable error: Wrong JPEG library version: library is 62, caller expects
    90test: jpeg\jpeg_im2im.................................................Failed
    GD Error: gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library
    version: library is 62, caller expects 90test: jpeg\jpeg_resolution.............
    ...............................Failed
    

    Also dachte ich mir, lass ich mich mal nicht lumpen und habe von hier (http://www.ijg.org/) die aktuelle Version gezogen und kompiliert (ja, es hat sogar geklappt, trotz tausender Warnungen, weil mein VS zu "neu" ist). Die Lib habe ich dann eingefügt und libgd nochmal neu erstellt. Der Fehler tritt aber immer noch auf. In den Headern war auch bereits Version 9 eingetragen, auch wenn die mitgelieferte Lib von jpeg deutlich kleiner ist (denke aber mal, dass das trotzdem schon die richtige war und meine Versuch daher generell nutzlos). Und jetzt wird es für mich eben undurchsichtig. Ich habe jetzt keine Ahnung, wann wo welche jpeg-lib gelinkt wird bzw. wie die Programme auf den Trichter kommen, dass die aktuelle Version veraltet sei. In den ganzen jpeg-Headern ist auch die richtige Version eingetragen. Hat da jemand noch eine Idee? Oder ist das vllt. gar nicht schlimm, wenn die DLL + lib erfolgreich erstellt wurde (aber warum meckert nmake check dann)?

    @passant: Das hatte ich mitbekommen, allerdings war in den Files zu erkennen, dass das wohl für mingw32/cygwin bestimmt ist (also die .lib). Daher bin ich davon ausgegangen, dass das wohl nicht funktionieren wird. 😕

    Ach und für die Nachwelt: Die Inhalte der Unterordner von include (aus den Dependency-Files, in meinem Fall dem x64 Ordner) habe ich einfach nach "src" kopiert und die libs (ebenfalls aus den Dependency-Files) in den (ich nenne ihn mal) Hauptordner.



  • So ... ich bin jetzt mal ganz strikt nach dem Makefile gegangen, was die libs und includes angeht. Auf einmal funktioniert es. Außer, dass ich jetzt nich alle Libs in den Hauptordner kopiert habe, hat sich zwar nichts verändert, aber dennoch gehts auf einmal. Eine Fehlannahme war auf jeden Fall, zu glauben, dass libjpeg verwendet wird. Stattdessen wird ausschließlich libjpeg-turbo gelinkt. Da wundert es natürlich nicht, dass es keine Auswirkungen hatte, die neueste Version einzusetzen. Wie der check-Fehler zustande kam, kann ich mir dennoch nicht wirklich erklären.

    Das einzige, was jetzt tatsächlich noch fehlt, ist das Resource-Skript dazuzulinken. Das ist zwar kein muss, ich würde die DLL aber gerne so verwenden, wie es vom Autor vorgesehen war, also auch mit den Zusatzinformationen. Falls da einer einen heißen Tipp hat, freue ich mich natürlich (wenn ich auch das rausfinde, poste ich das hier noch, falls jemand auch mal Probleme mit dieser Lib haben sollte).

    Vielen Dank nochmal an alle für die richtigen Impulse!



  • libgd schrieb:

    @passant: Das hatte ich mitbekommen, allerdings war in den Files zu erkennen, dass das wohl für mingw32/cygwin bestimmt ist (also die .lib). Daher bin ich davon ausgegangen, dass das wohl nicht funktionieren wird. 😕

    Achso, funktionieren libs nur mit dem Compiler mit dem sie erstellt wurden? Also die mingw32-lib nicht mit deinem VS2013? Sorry, das wusste ich nicht.

    Mit mingw32 (C::B) funktioniert die Sache auf jeden Fall prima!



  • passant schrieb:

    libgd schrieb:

    @passant: Das hatte ich mitbekommen, allerdings war in den Files zu erkennen, dass das wohl für mingw32/cygwin bestimmt ist (also die .lib). Daher bin ich davon ausgegangen, dass das wohl nicht funktionieren wird. 😕

    Achso, funktionieren libs nur mit dem Compiler mit dem sie erstellt wurden? Also die mingw32-lib nicht mit deinem VS2013? Sorry, das wusste ich nicht.

    Mit mingw32 (C::B) funktioniert die Sache auf jeden Fall prima!

    Wo du das so sagst, bin ich mir gerade selbst nicht sicher. ^^ Die DLLs funktionieren generell, aber ich glaube die Libs sollten schon vom entsprechenden Compiler erstellt worden sein, weil es sonst hier und da zu fehlern kommen kann ... Da weiß aber jemand anderes vllt. besser Bescheid.

    Das Problem mit den Resourcen-Skripts habe ich einfach via Resourcen-Editor gelöst, sonst habe ich leider keine gängige Lösung gefunden, die einfach dazuzulinken.


Anmelden zum Antworten