C++ Eigener Packer

xtrars

Ensign
Registriert
Juni 2010
Beiträge
148
Hallo liebe CB-Comunity,

ich habe mir die Frage schon öfter gestellt. Wie kann ich in einen Projekt Dateien einfügen (Textdateien, exe, Bilder) und sie während der Laufzeit auf "Knopfdruck" wieder ausgeben. Mit Ressourcendateien kenne ich mich bereits aus (zum Beispiel Sounddateien aus Ressource wiedergeben). Wäre für Hilfe dankbar.

PS.: externe Packer oder Installer möchte ich nicht nutzen.
 
Ich würde sagen, du extrahierst die einzelnen Sektionen aus einem normalen Binary, komprimierst sie mit
deinem Verfahren und dann speicherst du die komprimierten Daten zusammen mit einem Dekomprimierer in
ein neues Binary.
Das dekomprimiert die Daten dann und springt an den ursprünglichen Einspringpunkt. Fertig.
 
Das was du schreibst hört sich extrem heftig an. Zumal ich nur ein kleiner Hobbyprogrammierer bin, der keine Welten bewegen kann^^ Wäre nice, wenn es einfacher ginge oder du es näher erläutern könntest.
 
Ok danke. Ich werde mir es mal zu Gemüte führen.
 
Ich weiß ja nicht wie genau deine Anforderungen aussehen aber vielleicht wäre es einfacher einfach ein zip-archiv zu erstellen wo du dann deine benötigten Dateien reinpackst? Im Programm kannst du dann die jeweils benötigten Dateien entpacken und benutzen.
 
Und genau das will ich nicht, wie oben im ersten Beitrag geschrieben.
 
Ich hatte das so verstanden, dass du kein extra Tool heranziehen willst. Man könnte aber auch direkt im eigenen Programm irgendwie zippen/unzippen usw. Das habe ich zwar noch nicht gemacht aber möglich ist es zumindest.

Wenn die Daten nach dem Kompillieren noch irgendwie änderbar sein sollen dann musst du irgendwie die Dateien in eine neue Datei packen. Natürlich kannst du das auch selbst machen indem du die diese in eine neue Datei kopierst.
 
Hört sich fast nach der einzigen Möglichkeit an :( Mal sehen; ein bisschen probieren....
 
Irgendwie weiß ich deine Anforderungen nicht so recht zu interpretieren.
Wenn du deinem Programm einfach normale Daten komprimieren willst, und dabei auf externe Programme verzichten willst, würde ich einfach eine fertige Progammbibliothek wie zlib verwenden. Es muss nicht notwendigerweise eine Datei sein, man kann beliebige Daten komprimieren, also die Bibliothek lässt sich auch für Anwendungsfälle wie ein Netzwerk-Client der Daten empfängt und diese entkomprimieren kann, ohne sie in eine temporäre zip Datei zwischenzuspeichern (soweit ich weiß, hab das Teil selber noch nicht verwendet)
Wenn du deine .exe komprimieren willst, diese aber nach dem komprimieren noch ausführbar sein soll, ist UPX eine übliche Wahl. Der Entpacker ist dann in der eigenen .exe enthalten, man hat also nicht nachher zwei Dateien oder so.
 
Zurück
Oben