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
Antwort
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.
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.
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.
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.
Das sieht sehr vielversprechend: https://github.com/cyrilcode/embed-resource
CMake basiert und plattformunabhängig.
- 1. Plattform-unabhängige mathematische Funktionen in Clojure (Skript)
- 2. Hat Python automatische Ressourcenverwaltung?
- 3. Schmerzlose Ressourcenverwaltung in Java
- 4. Solaris 9 Projekte (Ressourcenverwaltung)
- 5. Ausnahmebehandlung/Ressourcenverwaltung in Jersey JAX-RS
- 6. Ist C++ - ähnliche Ressourcenverwaltung in Java möglich
- 7. Composing unabhängige Züge
- 8. Order-unabhängige Hash-Algorithmus
- 9. Eingeschlossene unabhängige Variablen - R
- 10. Unabhängige Teilmenge von Cabal-Paketen
- 11. Mehrere unabhängige Teiltöne in AngularJS
- 12. Mehrere unabhängige Gruppen in LinqToSql
- 13. definieren Unabhängige FlagSets in golang
- 14. Nginx/SSI unabhängige Fragment Caching
- 15. Locale-unabhängige Implementierung von Strtod
- 16. Rendern mehrere unabhängige redux-Form
- 17. unabhängige Expression Auswertung in Winkel
- 18. Unabhängige Reihen von ausgewählten Eingängen
- 19. Unabhängige Multithread-Prozesse blockieren gleichzeitig
- 20. Messaging Plattform
- 21. Charting-Plattform
- 22. Wie man zwei unabhängige Repositories verbindet?
- 23. Eine unabhängige Kopie von UIBezierPath erstellen?
- 24. Kosten- und Aktivierungsfunktionen für mehrere unabhängige Labels
- 25. Android RecyclerView CardView StaggedGridLayoutManager: Unabhängige Spalte scroll
- 26. Finden größte unabhängige Teilmenge von einer Konnektivitätsmatrix
- 27. PHP: "unabhängige" Funktion zu ersetzen mime_content_type?
- 28. Android die Definition Dichte-unabhängige Pixel
- 29. Threading/unabhängige Ausführung für meine einfache Herausforderung?
- 30. php CURL - mehrere unabhängige Sitzungen - brauchen Hilfe!
[Einbetten von Ressourcen in ausführbare Datei mit GCC] (https://stackoverflow.com/questions/4158900/embding-resources-in-executable-using-gcc) – user