Как включить изображения в качестве ресурсов в исполняемый файл C ++? - PullRequest
5 голосов
/ 14 февраля 2009

Возможно ли включить изображения (jpegs) в качестве ресурсов в исполняемый файл win32 c ++? Если так, то как?

Ответы [ 3 ]

4 голосов
/ 14 февраля 2009

Если это только 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 и файлы изображений).

0 голосов
/ 14 февраля 2009

Вот документация MSDN о файлах ресурсов.

http://msdn.microsoft.com/en-us/library/aa380599(VS.85).aspx

0 голосов
/ 14 февраля 2009

Может быть это это то, что вы ищете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...