Могут ли текстовые документы и другие файлы быть упакованы в исполняемый файл C - PullRequest
1 голос
/ 11 октября 2010

Приложение My C использует некоторые файлы для копирования. Будут ли файлы содержаться в исполняемом файле, а не как отдельные файлы? Должно ли оно быть связано статически? Я использую Eclipse CDT, если это имеет значение.

Ответы [ 3 ]

3 голосов
/ 11 октября 2010

Существует несколько способов связать данные файла в исполняемый файл. Платформа, подобная Windows, позволяет связывать данные в исполняемый файл как «ресурс» и предоставляет API для доступа к этим ресурсам (таким образом значки и другие объекты связываются в исполняемый файл Windows). Это, вероятно, лучший способ сделать это, если ваша платформа поддерживает его - поддержка для него встроена прямо в IDE.

На более низком уровне вы можете использовать компоновщик, чтобы напрямую связать файл с исполняемым файлом как адресуемый объект:

И, наконец, если вы имеете дело с более примитивной системой, такой как некоторые встроенные платформы, вы можете запустить файл через что-то, что преобразует его в исходный код для массива байтов C:

1 голос
/ 11 октября 2010

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

Если вы хотите запекать файлы в свой исполняемый файл, вы можете запекать их в постоянных строках:

const char myTextFileData[] = "the text of the file goes here";

Конечно, вам придется предварительно обработать ваши текстовые файлы в исходные файлы на языке C (не забывая правильно экранировать кавычки, обратную косую черту, символы новой строки и другие управляющие символы).В качестве альтернативы вы можете использовать инструмент, такой как objcopy, чтобы преобразовать данные файла непосредственно в объектный файл и затем связать этот объектный файл с исполняемым файлом.

0 голосов
/ 11 октября 2010

Нет.Исполняемый файл содержит только выходные данные компилятора и компоновщика.Любые вспомогательные файлы, необходимые для вашей программы, должны быть упакованы отдельно.

...