Ressourcenerstellung unter Linux



  • Hallo Ihr,

    Ich google mir die Finger wund, wie ich unter wxWidgets in Linux (Ubuntu) Ressourcen einbinden kann, resp. erstellen (falls das überhaupt möglich ist). Ich arbeite gerade an einen kleinem Programm, das ähnlich wie MasterMind arbeitet, und ich möchte gerne ein Bild laden. Das funktoniert auch soweit, aber eben nur wenn ich das Bild lokal lade. Wie das unter Windows gemacht wird kann man überall im Netz nachlesen, aber für Linux finde ich keine Anleitung.

    Die IDE ist Code::Blocks, dort ist auch ein Register für den Ressourcen Compiler angegeben, im entsprechenden Forum ist aber eine solch ähnliche Frage, mit "lies ein Buch" abgekanzelt worden.

    Ich bin mir fast sicher das es geht, nur eben nicht wie!

    Ich hoffe Ihr könnt mir da helfen.
    G-DC! 🙂



  • Es geht schon, du könntest die Bilder z. B. als XPM speichern und einkompilieren. Aber normalerweise sollte man (zumindest unter Linux üblich) die Resourcen als einzelne Dateien liefern.



  • Also, wie devkid schon sagte, kannst du zum einen die Bilder so mitliefern, das Bild als xpm speichern und dieses dann später nutzen oder das Bild in ein C Array konvertieren und aus dem später laden.



  • guenni81 schrieb:

    Also, wie devkid schon sagte, kannst du zum einen die Bilder so mitliefern, das Bild als xpm speichern und dieses dann später nutzen oder das Bild in ein C Array konvertieren und aus dem später laden.

    Ist das selbe. 😉



  • @devkid
    Kann ich jetzt nicht unbedingt behaupten das dies das selbe ist. Mit der XPM Methode hatte ich stellenweise eine schlechtere Bildqualität wie wenn ich diese mittels C Code hinzugefügt hatte. Man muß natürlich aber auch an dieser Stelle sagen das es sich um png Dateien mit Alpha Transparenz gehandelt hat.
    http://wiki.wxwidgets.org/Embedding_PNG_Images



  • guenni81 schrieb:

    Mit der XPM Methode hatte ich stellenweise eine schlechtere Bildqualität wie wenn ich diese mittels C Code hinzugefügt hatte.

    😕 XPM ist ein eingebettetes C-Array.



  • devkid schrieb:

    😕 XPM ist ein eingebettetes C-Array.

    Tja, war leider aber meine Feststellung bis jetzt. 😉
    Soweit ich aber weiß betrefft dies nur die png Dateien mittels Alpha Transparent.
    Zitat aus dem von mir weiter oben genannten Link:

    The bad thing about XPM inclusion is the inflating of executables size and the lacking of alpha transparency.



  • Vielen Dank euch Beiden, habe es jetzt so gemacht wie guenni81 es unter dem link http://wiki.wxwidgets.org/Embedding_PNG_Images gezeigt hat, und bin sehr zufrieden 👍

    Verwendet habe ich ein 10k GIF und mit bin2c in ein cpp - file verwandelt als static const c-array abgelegt, mit einem memory stream eingelesen, und via wxImage-Konstruktor in ein gültiges image vom Typ GIF verwandelt. Dickes thx 🙂

    Jetz habe ich aber noch eine Frage, eigentlich gehört sie ins Ansi-C oder C++ Forum aber da ich den Tip von hier habe frage einfach hier. Was mir nicht schmecken will ist die Tatsache das ich ein Objekt-File erstellen muss (cpp).

    Ich verwende jetzt PCH (precompiled header) und würde gerne die ganze Ressource im PCH unterbringen, aus Performancegründen (bringt das was?) und auch, weil mir ein #include "my_icon.cpp" nicht so recht passen will.

    Was bzw. wie würdet Ihr es machen ?



  • pch bringt hier gar nix.
    im header steht ja nur die deklaration auf die daten. kostet keine compiliergeschwindigkeit. reinmixen tut die daten dann nachher der linker.



  • Danke, aber bei mir wird nichts mehr vom linker reingemixt, da ich via #include "my_icon.cpp" den Quelltext übernehme, ist ein extern Verweis nicht mehr möglich. Zusätzlich ist ist das array als static const c-array abgelegt, da hätte ich ohnehin (regulär) keinen Zugriff von ausserhalb. Die Datei "my_icon.cpp" also wird nicht kompiliert und nicht gelinkt, daher meine PCH Überlegungen.



  • Geplant war aber, daß Du eine "my_icon.h" baust und die "my_icon.cpp" ganz normal ins Projekt aufnimmst.
    Oder hast DU jemals davon gehört, daß jemand eine *.cpp inkludiert?



  • volkard schrieb:

    Geplant war aber, daß Du eine "my_icon.h" baust und die "my_icon.cpp" ganz normal ins Projekt aufnimmst.

    Von wem? Dir? Nicht das ich wüsste.

    Ließ mal den Abschnitt Including in http://wiki.wxwidgets.org/Embedding_PNG_Images dort wird dir geholfen.



  • Also ich habe es jetzt so gemacht das ich die "cpp" in "hpp" umbenannt habe, die Datei wird im PCH gelistet und somit nur bei einem Full-Rebuild neu übersetzt, das ganze arbeitet dann so das jedes modul seine eigene Variable mit dem Namen my_image enthält, da diese aber als Konstante definiert ist, wird sie vom linker wie EINE Variable behandelt und somit auch nur einmal im Daten-Segment angelegt. Damit erspare ich mir lästige extern und Kompilierzeit.


Log in to reply