libpng libjpeg

Thomasio

Erfahrenes Mitglied
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"?
 
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ß
 
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.
 
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 :(
 
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*.
 
(weiterhin OT):
Gut ... weder kenne ich Maven noch verstehe ich deine Sorglosigkeit.
Sorglos? Versteh nicht ganz, was du meinst.
Ändern kann man das Prinzip sowieso nicht.
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?
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 :D
 
(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*
 
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... :D

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

edit: obwohl, es ist keiner hier :D
 
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.
 
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ß
 
Zurück