Problème :
Intégration de données binaires externes dans une application C/C compilée par GCC, spécifiquement le code shader pour une distribution plus efficace en tant qu'exécutable unique fichier.
Solutions :
GCC propose deux solutions :
ld -r -b binary -o binary.o foo.bar # Then link in binary.o
Cette commande convertit le fichier foo.bar dans un fichier objet (binary.o) qui peut être lié au programme.
Ces utilitaires convertissent n'importe quel fichier dans un tableau d'octets, qui peut ensuite être inclus dans le programme.
Mise à jour Exemple :
#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; }
Cet exemple utilise la solution basée sur ld pour intégrer le fichier foo.bar dans l'exécutable. Il récupère ensuite la taille de la ressource à l'aide d'une solution de contournement et transfère le contenu de la ressource sur la console.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!