2009-11-01 16 views
5

Estoy buscando una manera de insertar archivos de texto en mis binarios (como el sistema de recursos de Windows). Necesito algo que también sea independiente de la plataforma (funciona en Windows y Linux). Encontré que la administración de recursos de Qt es lo que necesito, pero no estoy interesado en mi aplicación dependiendo de Qt solo por esto. También encontré esta herramienta en http://www.taniwha.com/~paul/res/ ... pero es demasiado específica de la plataforma.Administración de recursos independiente de plataforma

+0

[Incrustar recursos en ejecutable usando GCC] (https://stackoverflow.com/questions/4158900/embedding-resources-in-executable-using-gcc) – user

Respuesta

1

Si está utilizando QT 4.5, puede asegurarse de que el programa solo dependa de una pequeña porción de QT, como libqtcore. QResource es una parte de libqtcore.

0

Eso no es una gran idea. En Linux, por ejemplo, se espera que los datos se instalen en un subdirectorio de "$ datadir" que, de forma predeterminada, se define como "$ prefijo/compartir", donde "$ prefijo" es el prefijo de instalación. En Mac OS X, se espera que los recursos se instalen en $ appbundle/Contents/Resources, donde $ appbundle es el nombre de la carpeta que termina en ".app". En Windows, la instalación de datos en una carpeta que es un hermano del ejecutable no es una práctica poco común. Puede ser mejor utilizar el sistema de compilación CMake y utilizar sus características de embalaje CPack para instalar/agrupar de forma predeterminada y preferida.

Si bien agrupar sus recursos en el ejecutable, puede parecer genial, en realidad es una idea peligrosa ... por ejemplo, ¿se asignarán los datos incrustados en una página ejecutable? ¿Qué sucederá si intenta sobrescribir o modificar los datos? ¿Qué sucede si desea ajustar o modificar los datos en tiempo de ejecución? Cosas en que pensar

3

La utilidad xxd se puede utilizar para crear un archivo de origen C, que contiene sus blobs binarios como una matriz (con la opción de línea de comando -i). Puede compilar eso a un objeto que está vinculado a su ejecutable.

xxd debe ser portátil para la mayoría de las plataformas.

+0

¿Querías 'xxd -i'? – ephemient

+0

Ahh sí, tienes razón. – caf

0

Puede agregar simlpy todo tipo de datos a su binario normal. Funciona tanto en Windows como en Linux. Tendrás que abrir tu propio binario en tiempo de ejecución y leer los datos desde allí.

Sin embargo, tengo que aceptar que incrustar datos en binarios es una idea extraña. Es una práctica común incluir tales datos como archivos separados empaquetados con la aplicación.

Cuestiones relacionadas