Как встроить файл в исполняемый файл?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как встроить файл в исполняемый файл?

Сообщение Anonymous »

У меня есть небольшой демонстрационный исполняемый файл, написанный в C ++, который зависит только от одного изображения PNG 5 КБ, который загружается перед тем, как он может запустить, которое используется для текста пикселя, который я сделал. Из -за этого одного файла мне нужно было бы выдать архив ZIP вместо одного исполняемого файла, который создает достаточно трения между загрузкой и «воспроизводится», который, как я полагаю, отговорил бы некоторые от того, чтобы попробовать его. Это? (Other questions with a similar title to this exist, but they and their answers seem to get into more specific issues and weren't very helpful)

edit:The compiler is Visual C++ 2010 and this is on Windows (though I would want to avoid windows specific utilities for this)

edit2: Alf's answer seemed like Наиболее портативный метод, поэтому я быстро написал функцию для анализа файла PNG в файл TXT или заголовка, который можно прочитать как массив Unsigned CHAR . Похоже, что в этой форме он идентичен самому файлу PNG, но мой загрузчик PNG не примет массив. При загрузке его из памяти, анализатор PNG принимает (void * buffer, size_t length) < /code>, если он имеет значение. < /P>

Код, если вы хотите увидеть, но я все равно приму другие ответы, если вы думаете, что они лучше, чем этот метод: < /p>

все равно приму другие ответы: < /p>

.

Код: Выделить всё

void compileImagePNGtoBinary(char * filename, char * output){

FILE * file = fopen(filename, "rb");
FILE * out = fopen(output, "w");

unsigned char buffer[32];
size_t count;
fprintf(out, "#pragma once \n\n static unsigned char TEXT_PNG_BYTES[] = { ");
while(!feof(file)){
count = fread(buffer, 1, 32, file);

for(int n = 0; n < count; ++n){
fprintf(out, "0x%02X, ", buffer[n]);
};
};
fprintf(out, "};");
fclose(file);
fclose(out);

};
final Edit : ImageMagic>

Подробнее здесь: https://stackoverflow.com/questions/728 ... executable
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»