Heim >Backend-Entwicklung >C++ >Wie bette ich Ressourcen (z. B. Shader-Code) in ausführbare GCC-Dateien ein?
Problem:
Einbetten externer Binärdaten in eine C/C-Anwendung, die von kompiliert wurde GCC, insbesondere Shader-Code für eine effizientere Verteilung als einzelne ausführbare Datei Datei.
Lösungen:
GCC bietet zwei Lösungen:
ld -r -b binary -o binary.o foo.bar # Then link in binary.o
Dieser Befehl konvertiert die Datei foo.bar in eine Objektdatei (binary.o), die mit dem Programm verknüpft werden kann.
Diese Dienstprogramme konvertieren alle Datei in ein Byte-Array umwandeln, das dann in das Programm eingebunden werden kann.
Aktualisiert Beispiel:
#include <stdio.h> extern char _binary_foo_bar_start[]; extern char _binary_foo_bar_end[]; int main(void) { // Get the resource size (workaround) unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start); printf("Resource size: %u\n", iSize); printf("Address of start: %p\n", &_binary_foo_bar_start); printf("Address of end: %p\n\n", &_binary_foo_bar_end); // Dump resource contents for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) { putchar( *p); } return 0; }
In diesem Beispiel wird die LD-basierte Lösung verwendet, um die Datei foo.bar in die ausführbare Datei einzubetten. Anschließend wird mithilfe einer Problemumgehung die Ressourcengröße abgerufen und der Ressourceninhalt an die Konsole ausgegeben.
Das obige ist der detaillierte Inhalt vonWie bette ich Ressourcen (z. B. Shader-Code) in ausführbare GCC-Dateien ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!