2009-11-01 4 views
5

Я ищу способ встраивания текстовых файлов в свои двоичные файлы (например, в систему ресурсов Windows). Мне нужно что-то, что тоже независимо от платформы (работает в windows и linux). Я нашел, что управление ресурсами Qt является тем, что мне нужно, но я не очень увлекаюсь своим приложением в зависимости от Qt для этого. Я также нашел этот инструмент в http://www.taniwha.com/~paul/res/ .. но он слишком специфичен для платформы.Управление независимыми ресурсами платформы

+0

[Встраивание ресурсов в исполняемый файл с использованием GCC] (https://stackoverflow.com/questions/4158900/embedding-resources-in-executable-using-gcc) – user

ответ

1

Если вы используете QT 4.5, вы можете убедиться, что программа зависит только от небольшого куска QT, такого как libqtcore. QResource является частью libqtcore.

0

Это не такая отличная идея. В Linux, например, ожидается, что данные будут установлены в подкаталог «$ datadir», который по умолчанию определяется как «$ prefix/share», где «префикс $» является префиксом установки. В Mac OS X ожидается, что ресурсы будут установлены в $ appbundle/Contents/Resources, где $ appbundle - это имя папки, заканчивающееся на «.app». В Windows установка данных в папке, являющейся дочерним элементом исполняемого файла, не является необычной практикой. Возможно, вам лучше использовать систему сборки CMake и использовать ее функции упаковки CPack для установки/объединения по умолчанию, предпочтительной для платформы.

Хотя объединение ваших ресурсов в исполняемый файл может показаться классным, на самом деле это опасная идея ... например, будут ли внедрены внедренные данные на исполняемую страницу? Что произойдет, если вы попытаетесь перезаписать или изменить данные? Что делать, если вы хотите настроить или изменить данные во время выполнения? О чем подумать.

3

Утилита xxd может быть использована для создания исходного файла C, содержащего ваши двоичные капли в виде массива (с опцией командной строки -i). Вы можете скомпилировать это для объекта, который связан с вашим исполняемым файлом.

xxd должен быть портативным для большинства платформ.

+0

Вы имели в виду 'xxd -i'? – ephemient

+0

Ах, да, вы правы. – caf

0

Вы можете simlpy добавить все виды данных в ваш обычный двоичный файл. Работает как в Windows, так и в Linux. Вам нужно будет открыть свой собственный двоичный файл во время выполнения и прочитать данные оттуда.

Однако я должен согласиться с тем, что вложение данных в двоичные файлы - странная идея. Обычно принято включать такие данные, как отдельные файлы, упакованные с приложением.

Смежные вопросы