Maison >développement back-end >C++ >Comment puis-je intégrer de manière transparente des ressources dans des exécutables à l'aide de GCC ?
Pour intégrer sans effort des données binaires externes dans des applications C/C compilées par GCC, envisagez les méthodes suivantes :
Utilisation de la fonctionnalité de création d'objets de ld :
ld, l'éditeur de liens, offre la possibilité de convertir n'importe quel fichier en objet. Pour intégrer un fichier, exécutez la commande :
ld -r -b binary -o binary.o foo.bar # then link in binary.o
Cela crée un fichier objet ("binary.o") avec des symboles tels que comme :
Par exemple, pour accéder au contenu d'un simple fichier texte intégré à l'aide de ceci méthode :
#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; }
Utilisation d'un utilitaire Bin2c/Bin2h :
Ces utilitaires convertissent les fichiers en un tableau d'octets. Intégrez le tableau obtenu dans votre code.
Exemple avec création d'objet ld :
Voici comment incorporer une ressource dans un fichier objet :
ld -r -b binary -o foo.bar.o foo.bar
Le fichier objet résultant contient ces éléments symboles :
Pour accéder à la ressource intégrée dans votre code :
unsigned int iSize = (unsigned int)(&_binary_foo_bar_end - &_binary_foo_bar_start);
Cela fournit une méthode alternative pour déterminer la taille de la ressource.
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!