Implementé mi propio sistema para un proyecto de servidor web C++ que básicamente tomó un montón de archivos (HTML, CSS, JS, PNG, etc.) y creó encabezados C++ que contienen los datos codificados como static const char*
. Luego #include
esos encabezados donde necesito acceder a los datos. La aplicación que codifica los archivos de 'recursos' se ejecuta como un paso previo a la compilación. La aplicación de codificación usó boost::filesystem
para crear los encabezados de los recursos, por lo que funciona en Windows/* nix.
Un archivo de recursos típico podría tener este aspecto:
namespace resource
{
// Generated from mainPage.htm
static const char* mainPage_[] =
{
"<html>...</html>"
};
}
Para el contenido binario que codifican usando la notación \x
. También me aseguro de alinear los datos para que sean legibles en un editor.
Tuve algunos problemas: el compilador MS no permite que un static const char*
sea más grande que 64Kb que era un PITA. Afortunadamente, los únicos archivos más grandes que esto eran archivos JavaScript que podía dividir fácilmente en trozos más pequeños, sin embargo, las imágenes grandes serían un problema.
¿Deben incrustarse los recursos en su ejecutable? Si no, entonces otra ruta podría estar usando SQLite para almacenar los archivos; la puesta en marcha con esta base de datos liviana no supondría demasiado esfuerzo. – Rob
Similar: http://stackoverflow.com/questions/549031/how-do-you-include-images-as-resources-in-ac-c-executable – Rob