Я хочу вставить файл в программу. Он будет использоваться для файлов конфигурации по умолчанию, если они не указаны. Я понял, что могу просто использовать значения по умолчанию, но я хочу извлечь файл и поместить его на диск, чтобы его можно было изменить.Вставка файла в программу
ответ
Встраивание означает, что вы распространяете свою программу без файла?
Затем вы можете преобразовать его в код инициализации конфигурации в вашей инструментальной цепочке построения. Добавьте шаг make-файла (или любой другой инструмент, который вы используете) - скрипт, который преобразует этот .cfg-файл в некоторый файл кода C++, который инициализирует структуру данных конфигурации. Таким образом, вы можете просто изменить файл .cfg, перестроить проект и отобразить новые значения внутри.
Кстати, в Windows у вас может быть удача внедрить ваши данные в resource file.
Ну, что я действительно пытаюсь сделать, это чтобы моя программа могла генерировать действительный файл, например .png-файл, изнутри движка. Я хочу, чтобы иметь возможность затем сгенерировать эти файлы на диск, вроде как zip-файл. – Jeff
Встроенные данные часто называются «ресурсами». C++ не поддерживает встроенную поддержку, но ее можно управлять практически во всех исполняемых форматах файлов. Попробуйте найти менеджеров ресурсов для C++.
Одна общая вещь, которую вы можете сделать, это представить данные файла в виде массива статических байтов:
// In a header file:
extern const char file_data[];
extern const size_t file_data_size;
// In a source file:
const char file_data[] = {0x41, 0x42, ... }; // etc.
const size_t file_data_size = sizeof(file_data);
Затем данные файла будут просто глобальный массив байтов, собранных в свой исполняемый файл, который вы можете ссылаться на в любом месте. Вам придется либо переписать код обработки файлов, чтобы иметь возможность обрабатывать массив исходных байтов, либо использовать что-то вроде fmemopen(3)
, чтобы открыть дескриптор псевдодаля из данных и передать его на ваш код обработки файлов.
Конечно, чтобы получить данные в этой форме, вам нужно будет использовать какой-то шаг предварительной обработки, чтобы преобразовать файл в массив байтов, который может принять компилятор. Файл make был бы хорош для этого.
Существуют программы, которые будут транслировать файлы данных в пару файлов C (заголовок и тело) для вас. Там, вероятно, также программы, которые могут упаковывать данные непосредственно в файлы объектных ссылок, но, очевидно, это менее портативный хак. – Steve314
Хотя это решение работает с небольшими файлами, я испытал гигантские времена компиляции в Visual Studio (с файлом 4 КБ). Также Visual Studio начинает отставать, если вы открываете файл, содержащий массив .... – Tara
- 1. Вставка Gif в программу VB6
- 2. Ввод текстового файла в программу?
- 3. Вставка норвежских букв в SQLite db через java-программу
- 4. Удаление файла сценария не влияет на программу
- 5. Вставка PDF-файла в Firefox
- 6. Issue вставка файла в MySQL
- 7. Вставка свойств файла в Excel
- 8. Вставка файла ppt в Iframe
- 9. Вставка PDF-файла в латекс
- 10. Вставка файла сценария JQuery
- 11. Массовая вставка CSV-файла
- 12. Вставка файла PHP?
- 13. Добавление ICO-файла в программу Win32
- 14. Определить содержимое файла через программу в python
- 15. Передача файла в программу с Баш
- 16. Запись из файла в файловую программу
- 17. Загрузка a csv-файла в программу java
- 18. Загрузка файла .json в программу C#
- 19. Сбрасывание текстового файла в программу VB.net
- 20. Внедрение существующего exe-файла в другую программу
- 21. Динамическая загрузка jar-файла в программу Java
- 22. Конвейеризация файла данные с кошкой в программу
- 23. JavaFx Перетаскивание файла INTO в программу
- 24. Передача файла в программу с использованием Eclipse
- 25. Импорт файла .eps в программу Java
- 26. Вывод массива из двоичного файла в программу
- 27. Чтение .txt-файла в программу C
- 28. Преобразование java-файла в программу андроида
- 29. Вставка массивно из CSV-файла
- 30. Сделайте мою программу «Выберите программу по умолчанию» при открытии файла
У вас есть дубликаты: http://stackoverflow.com/questions/1074362/embedded-resource-in-c Поиск в этом отношении затруднен из-за использования «ресурсов» и «управления» в других контекстах в C++, но я считаю, что я видел вопросы по Linux и Mac ... – dmckee
linux dup: http://stackoverflow.com/questions/72616/embed-data-in-ac-program (ранний порядковый номер тоже) – dmckee
Если вы хотите сделать это полностью самостоятельно, это библиотека и/или конкретная операционная система - добавьте в какую среду вы хотите это сделать. –