Datei "im" Programm speichern.
-
Hallo,
ich habe mir ein Programm geschrieben, dass mir beliebige Dateien in eine C++ Headerdatei umwandelt und dort ein String vorhanden ist, in dem die Datei im Hex Format steht.
Allerdings dauert der Umwandlungsvorgang sehr lange und bei ~2 MB Dateien wird der Header gute 20 MB groß, dies macht der GCC leider nichtmehr mit.
Gibt es eine möglichkeit die Dateien kleiner in einer Headerdatei zu speichern?
P.S. Ist etwas schwer verständlich geschrieben, bei Fragen: Stellt sie einfach, hab auch paar Beispiele.
-
Dass deine Headerdatei so groß wird ist ja klar und wird sich auch nicht vermeiden lassen. Aus welchem Grund willst du das denn so machen und nicht als externe Datei oder als Ressource?
-
masterofx32 schrieb:
Dass deine Headerdatei so groß wird ist ja klar und wird sich auch nicht vermeiden lassen. Aus welchem Grund willst du das denn so machen und nicht als externe Datei oder als Ressource?
Hallo,
Als externe Datei hätte ich es nicht so gerne weil ich es immer sehr unschön finde mehrer Dateien auf einem Haufen rumfliegen zu haben. (Persönliche Meinung :D)
Ressource: Funktioniert nicht OS Unabhängig

-
Naja, ich finde da Datendateien schöner und das ist nicht so monolithisch. Man kann ja auch nicht genau sagen, wie gut ein Betriebssystem so große ausführbare Dateien verkraftet(also wenn es dann bedeutend mehr als 2MB sein sollten). Wenn das Problem bei GCC nur mit der Größe einzelner Headerdateien zu tun hat, kannst du es ja in 20 1MB-Headerdateien aufteilen und dann so probieren:
[HeaderBegin.h] const char *MeinTollesDateiLiteral = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" #include "Header2.h"[Header2.h] "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";Eine zweite Möglichkeit wäre das Inkludieren von binären Headerdateien. Das ist natürlich in keiner Weise compilerunabhängig lauffähig, denn laut Standard wird ja nur 7-Bit ASCII-Codierung unterstützt von daher weiß man nicht, ob der Compiler/Präprozessor die binäre Headerdatei nicht einfach zerstört.