Maison > développement back-end > C++ > Comment intégrer des ressources (par exemple, du code Shader) dans les exécutables GCC ?

Comment intégrer des ressources (par exemple, du code Shader) dans les exécutables GCC ?

Patricia Arquette
Libérer: 2024-12-29 11:52:10
original
846 Les gens l'ont consulté

How to Embed Resources (e.g., Shader Code) into GCC Executables?

Intégration de ressources dans un exécutable à l'aide de GCC

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 :

  • Utiliser la capacité de ld pour convertir des fichiers en objets :
ld -r -b binary -o binary.o foo.bar

# Then link in binary.o
Copier après la connexion

Cette commande convertit le fichier foo.bar dans un fichier objet (binary.o) qui peut être lié au programme.

  • Utilisation des utilitaires bin2c/bin2h :

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)(&amp;_binary_foo_bar_end - &amp;_binary_foo_bar_start);

    printf("Resource size: %u\n", iSize);
    printf("Address of start: %p\n", &amp;_binary_foo_bar_start);
    printf("Address of end: %p\n\n", &amp;_binary_foo_bar_end);

    // Dump resource contents
    for (char* p = _binary_foo_bar_start; p != _binary_foo_bar_end; ++p) {
        putchar( *p);
    }

    return 0;
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal