tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
14
ZUGRIFFE
329
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    680
    Ich stehe vollkommen im Wald und finde trotz zig1000 Webseiten zum Thema nicht heraus, wie das funktioniert.

    Ich verwende die IDE von Code::Blocks unter Windows7 Ultimate 64 bit.
    Darin enthalten ist MinGW/GCC.
    Zusätzlich installiert habe ich dann noch MinGW-w64.
    Das funktioniert alles prima, völlig ohne Installation, nur ein paar .zip entpacken, ganz ohne Anpassung von irgendwelchen Systemvariablen, kein Path oder sonstwas, ich muss nur in der IDE unter "Global Compiler settings" die "Toolchain executables" einstellen und kann prima sowohl 32bit als auch 64bit Anwendungen für Windows coden.

    Jetzt möchte ich in meinen Anwendungen etwas mehr Möglichkeiten haben, oder anders, ich will nicht nur .bmp sondern auch andere Grafikformate laden können, wie z.B. .jpg oder .png.

    Begriffen habe ich, dass die allermeisten Coder dazu libpng und libjpeg verwenden, aber das wars auch schon.
    Angefangen damit, dass ich nicht mal weiss, was ich downloaden muss, weil es mehrere Dutzend Versionen/Builds gibt und dann auch noch gleich zu Anfang irgendwo steht, dass libpng voraussetzt, dass man zlib hat, über keine Ahnung wie ich das bilde oder installiere oder einstelle, bis hin zur Frage, gibt es das in 2 Versionen für 32bit und 64bit, ich habe keine Ahnung und ich werde beim besten Willen nicht schlau aus den 1000den Seiten die ich dazu gefunden habe.

    Hat jemand eine Anleitung "für Doofe", wie man das in Code::Blocks/MinGW "einbaut"?
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    libpng: Version 1.5.4
    zlib: Version 1.2.5

    Du ladest den Source von zlib herunter.
    Aus dem Archiv entpacken, kompilieren, heraus kommt min. eine lib-Datei
    Dann den Source von libpng holen
    Entpacken.
    In den Linkereinstellungen (Zusätzliche Abhängigkeiten) die lib-Datei von zlib eintragen.
    libpng kompilieren.

    Bei deinem Programm dann die lib-Datei einbinden (in den Linkereinstellungen), die beim Kompilieren von libpng entstanden ist.

    Mit jpg geht es ähnlich, nur ohne zlib.

    Gruß
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    SE Tutorials.de Gastzugang
    Wow ... wusste garnicht das das unter C so ein riesen Aufwand ist eine Lib zum laufen zu bekommen. Oder Java bin ichs ja gewöhnt einfach die Lib laden ... das Zip mit in den CP und gut is ... *kann natürlich mal vorkommen das man nur Source hat und den compilen muss ... in der Regel bekommt man aber fertige Libs*.
    Das mit Abhängigkeiten kenn ich aber auch so krass ... und sogar noch krasser wenn eine Lib eine bestimmte Version einer Abhängigkeit vorraussetzt die aber von einer anderen Lib in einer anderen Version gebraucht wird ... alles nich so einfach.
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    So ein Aufwand ist es doch gar nicht.

    Entpacken: tar.gz-Archive etc. sind unabhängig von der Sprache.

    Kompilieren deshalb, weil es ja je nach OS verschiedene Binärformate etc. gibt.
    Ist aber bei den meisten Libs eine Sache von einer Minute, da die Projektdateien für verschiedene Compiler oft schon mitgeliefert werden (auch hier bei libpng).

    Und die Sache mit zlib...Wenn die libpng-Leute zlib aus Lizenzgründen oder was auch immer nicht gleich mitgeben dürfen, was soll man machen?
    Bei Java: Ich sag nur Maven...was das manchmal so alles aus dem Internet holt
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  5. #5
    SE Tutorials.de Gastzugang
    OFF-TOP

    Gut ... weder kenne ich Maven noch verstehe ich deine Sorglosigkeit.
    Das man sich Source anstatt Binär aus dem Netz laden muss ist ja nun wirklich nicht das Problem ... manchmal wünschte ich mir das es bei Java auch so wäre anstatt das meiste in fertig compileten Libs anzubieten ... doch hier schlägt Java's größte Stärke zu : wenn richtig implementiert läuft eine Lib , also nur einmal compilete Class-Files , auf allen VM gleich ... ist ja bei C deutlich anderst.
    Und das viele gerade auch aus lizenztechnischen Gründen die Abhängigkeiten beilegen können ist ja in Java auch nicht viel anderst. Was ich nur wirklich so aufwändig an Sprachen empfinde welche nicht über ein solche hohes Abstraktionslevel wie Java verfügen das man für jede Hardware alles komplett neu übersetzen und mit den Abhängigkeiten verknüpfen muss.
    Ich glaub aus genau diesem Grund habe ich nach dem 3ten Kapitel des OpenBook C von A-Z aufgehört ... weil es mir persönlich zu schwierig ist.

    Andererseits : wenn es nicht Leute geben würde die diese Sprache beherrschen würde es auch keine lauffähigen VM für Java auf unterschiedlichen Systemen geben die so aufgebaut sind damit eben der compilete Bytecode dierekt portierbar ist ... *so eine verdammte Zwickmühle*.
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    (weiterhin OT):
    Zitat Zitat von SPiKEe Beitrag anzeigen
    Gut ... weder kenne ich Maven noch verstehe ich deine Sorglosigkeit.
    Sorglos? Versteh nicht ganz, was du meinst.
    Ändern kann man das Prinzip sowieso nicht.
    Zitat Zitat von SPiKEe Beitrag anzeigen
    Ich glaub aus genau diesem Grund habe ich nach dem 3ten Kapitel des OpenBook C von A-Z aufgehört ... weil es mir persönlich zu schwierig ist.
    Ob das für den Eindruck reicht, wenn "int" erst im Kapitel 5 vorgestellt wird?
    Zitat Zitat von SPiKEe Beitrag anzeigen
    Andererseits : wenn es nicht Leute geben würde die diese Sprache beherrschen würde es auch keine lauffähigen VM für Java auf unterschiedlichen Systemen geben die so aufgebaut sind damit eben der compilete Bytecode dierekt portierbar ist ... *so eine verdammte Zwickmühle*.
    Ja, uns kann man nicht ausrotten
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    SE Tutorials.de Gastzugang
    (noch mehr OT)

    Wie war dich dieser schöne Spruch ... *grübel*

    Erst wenn jede Idee patentiert ...
    und jedes Programm geschrieben wurde ...
    werden wir merken das Anwälte nicht programmieren können ...

    *oder sowas in der Art jedenfalls*
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Also ich kenns in der zweiten Zeile mit "und jeder Programmierer eingesperrt wurde"
    ...da Pr.s ja doch verglichen mit Word-only-Nutzern sehr häufig Raubkopien erstellen, hacken und sich nicht gerne an Lizenzen halten...

    Aber wir sollten besser mit OT aufhren, bevor uns ein Mod auf die Finger haut

    edit: obwohl, es ist keiner hier
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  9. #9
    _Grubi _Grubi ist offline Mitglied Gold
    Registriert seit
    Sep 2009
    Beiträge
    216
    Vielleicht ist auch FreeImage für dich eine Alternative. Benutzt die von dir angegebenen Libs und noch bisschen mehr und verpackt alles in eine gleichbleibende Schnittstelle. Alle Abhängigkeiten werden bereits mitgeliefert. Leider funktioniert die statische Lib nicht (beim verwenden gibt es Linker-Fehler), es sollte also die Variante mit der DLL genommen werden.

    Ob es auch ein mitgeliefertes Projekt für Code::Blocks gibt, kann ich dir gerade nicht sagen.
     

  10. #10
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Sowohl zlib als auch libpng verwenden CMake als Buildsystem.

    Einfach CMake installieren, die Quelldateien entpacken und CMake GUI starten.

    Das Quellverzeichnis auswählen, dann konfigurieren und CMake Code::Blocks Projektdateien generieren lassen. Diese dann in Code::Blocks öffnen und die Bibliothek erstellen...

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  11. #11
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    680
    Wow, da habe ich ja eine tolle Diskussion angeregt.
    Verstanden habe ich allerdings herzlich wenig.
    Immerhin habe ich jetzt passende Versionsnummern und ein paar Anleitungen zum compilieren, da werde ich mich mal dran versuchen.
    Aber es fehlt mir die Info, wie das mit 32bit und 64bit ist, was für mich ganz wichtig wäre.
     

  12. #12
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ich hab zwar auf die Schnelle keine "offiziellen" Angaben gefunden, aber es scheint bei allen drei Libs Leute zu geben, die es schon für 64bit kompiliert haben. Der Source ist also sogar bei libjpg entsprechend ordentlich gemacht.

    Also einfach beim kompilieren angeben.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  13. #13
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    680
    Genau das ist mein Problem, bzw. damit bin ich mir nicht sicher.
    Ich habe ein paar Infos gefunden, dass die libs mit 64bit Windows "kompatibel" sind, aber das heisst nicht mehr, als dass es dank syswow64 unter Windows läuft, ob es echtes 64bit ist, wissen die Götter.
    Wenn ein 64bit Compiler nicht meckert, ist das sicher ein gutes Zeichen, aber heisst das, dass das Ganze bis runter in die letzten Abhängigkeiten von zlib wirklich echtes 64bit ist?
     

  14. #14
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ja, ein x64-Compiler spuckt ganz echte x64-Binaries aus
    Dann noch einen Test machen, ob man bei zB. zlib irgendwas erfolgreich dekomprimieren kann...wenn das auch geht sollte es ziemlich sicher passen.
    Thomasio bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  15. #15
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    680
    Dann sage ich ganz vielen Dank für die Hilfe.
    Mit etwas Glück müsste ich das jetzt auf die Reihe bekommen.
     

Ähnliche Themen

  1. Libpng Dokumentation
    Von Faller im Forum C/C++
    Antworten: 3
    Letzter Beitrag: 07.08.07, 10:42