Если это только Windows, используйте пользовательский ресурс. Если вы хотите что-то кроссплатформенное, то делайте то, что я сделал для недавнего проекта - создайте приложение, которое будет кодировать JPEG в виде буфера char*
в заголовочном файле, а затем включить эти заголовки в ваш основной проект. Вам также нужно будет сохранить размер буфера, так как он обязательно будет содержать NUL.
Например, у меня есть приложение, в котором вы можете передать множество файлов для кодирования, и для каждого файла вы получите заголовочный файл, который выглядит примерно так:
#ifndef RESOURCE_SOMEFILE_JPG_HPP
#define RESOURCE_SOMEFILE_JPG_HPP
namespace resource {
const char* SOMEFILE_JPG[] =
{
...raw jpeg data...
};
const int SOMEFILE_JPG_LEN = 1234;
} // resource
#endif // RESOURCE_SOMEFILE_JPG_HPP
Приложение должно экранировать специальные непечатаемые символы в формате \x
, но это довольно просто. Приложение использует библиотеку boost::program_options
, поэтому список файлов для кодирования можно сохранить в файле конфигурации. Каждый файл получает свой собственный заголовок, как показано выше.
Однако, имейте в виду - это работает только для небольших файлов, так как некоторые компиляторы имеют ограничение на максимальный размер, который может быть статическим буфером символов. Я уверен, что есть другие способы сделать это, но эта схема работает для меня (веб-приложение C ++, которое таким образом хранит HTML, CSS, JavaScript и файлы изображений).