Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von GCC Ressourcen nahtlos in ausführbare Dateien einbetten?
Um externe Binärdaten mühelos in von GCC kompilierte C/C-Anwendungen einzubetten, sollten Sie die folgenden Methoden in Betracht ziehen:
Verwendung der Objekterstellung von ld Funktion:
ld, der Linker, bietet die Möglichkeit, jede Datei in ein Objekt zu konvertieren. Um eine Datei einzubetten, führen Sie den Befehl aus:
ld -r -b binary -o binary.o foo.bar # then link in binary.o
Dadurch wird eine Objektdatei („binary.o“) mit Symbolen erstellt, z als:
Zum Beispiel, um auf den Inhalt einer einfachen Textdatei zuzugreifen, die damit eingebettet wurde Methode:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { // Print the contents of the embedded resource for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
Einsatz eines Bin2c/Bin2h-Dienstprogramms:
Diese Dienstprogramme konvertieren Dateien in ein Array von Bytes. Integrieren Sie das resultierende Array in Ihren Code.
Beispiel mit ld-Objekterstellung:
So integrieren Sie eine Ressource in eine Objektdatei:
ld -r -b binary -o foo.bar.o foo.bar
Die resultierende Objektdatei enthält diese Symbole:
So greifen Sie auf die eingebettete Ressource in Ihrem Code zu:
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
Dies bietet eine alternative Methode zur Bestimmung die Ressourcengröße.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von GCC Ressourcen nahtlos in ausführbare Dateien einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!