2009-11-01 9 views
5

Ich bin auf der Suche nach einer Möglichkeit, Textdateien in meine Binärdateien (wie Windows-Ressourcen-System) einzubetten. Ich brauche etwas, das auch plattformunabhängig ist (funktioniert in Windows und Linux). Ich fand, dass Qt-Ressourcenmanagement das ist, was ich brauche, aber ich bin nicht scharf darauf, dass meine App allein von Qt abhängt. Ich fand dieses Werkzeug auch bei http://www.taniwha.com/~paul/res/ .. aber es ist zu plattformspezifisch.Plattform unabhängige Ressourcenverwaltung

+0

[Einbetten von Ressourcen in ausführbare Datei mit GCC] (https://stackoverflow.com/questions/4158900/embding-resources-in-executable-using-gcc) – user

Antwort

1

Wenn Sie QT 4.5 verwenden, können Sie sicherstellen, dass das Programm nur von einem kleinen Stück QT abhängig ist, z. B. libqtcore. QResource ist ein Teil von libqtcore.

0

Das ist keine so gute Idee. Unter Linux zum Beispiel wird erwartet, dass Daten in einem Unterverzeichnis von "$ datadir" installiert werden, das standardmäßig als "$ prefix/share" definiert ist, wobei "$ prefix" das Installationspräfix ist. Unter Mac OS X wird erwartet, dass Ressourcen in $ appbundle/Contents/Resources installiert werden, wobei $ appbundle der Name des Ordners ist, der auf ".app" endet. Unter Windows ist das Installieren von Daten in einem Ordner, der ein Geschwister der ausführbaren Datei ist, keine ungewöhnliche Vorgehensweise. Sie können besser das CMake Build-System verwenden und seine CPack Paketierungsfunktionen zum Installieren/Bündeln in der standardmäßigen, bevorzugten plattformspezifischen Weise verwenden.

Obwohl die Bündelung Ihrer Ressourcen in die ausführbare Datei selbst cool erscheinen mag, ist es tatsächlich eine gefährliche Idee ... werden zum Beispiel die eingebetteten Daten in einer ausführbaren Seite zugewiesen? Was passiert, wenn Sie versuchen, die Daten zu überschreiben oder zu ändern? Was, wenn Sie die Daten zur Laufzeit optimieren oder ändern wollen? Dinge zum Nachdenken.

3

Das Dienstprogramm xxd kann zum Erstellen einer C-Quelldatei verwendet werden, die Ihre binären Blobs als Array enthält (mit der Befehlszeilenoption -i). Sie können das zu einem Objekt kompilieren, das mit Ihrer ausführbaren Datei verknüpft ist.

xxd sollte auf den meisten Plattformen tragbar sein.

+0

Sie gemeint 'xxd -i'? – ephemient

+0

Ahh ja, du hast Recht. – caf

0

Sie können einfach alle Arten von Daten an Ihre normale Binärdatei anhängen. Funktioniert in Windows und Linux. Sie müssen zur Laufzeit eine eigene Binärdatei öffnen und die Daten von dort lesen.

Allerdings muss ich zustimmen, dass das Einbetten von Daten in Binärdateien eine seltsame Idee ist. Es ist üblich, solche Daten als separate Dateien in die Anwendung zu integrieren.

Verwandte Themen