Возможно ли включать изображения (jpegs) в качестве ресурсов в исполняемый файл win32 C++? Если да, то как?Как вы включаете изображения в качестве ресурсов в исполняемый файл C++?
ответ
Вот документация MSDN о файлах ресурсов.
http://msdn.microsoft.com/en-us/library/aa380599(VS.85).aspx
большое спасибо, я искал неправильный термин (компиляция изображений в exe) – 2009-02-14 13:31:04
Возможно, что this - то, что вы ищете?
Если это 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 и файлы изображений таким образом).
Это то, что QT делает для кроссплатформенных ресурсов. –
Разумно хранить данные такого типа. Получает мой голос. Но он теряет некоторые функции, которые делают «ресурсы» хорошей идеей на платформах, которые их поддерживают. – dmckee
Необходимо уточнить свой вопрос. Изображение не является исполняемым кодом, поэтому «компиляция» его в исполняемый файл так и не определена. Что именно вы хотите? –
OS зависим, и даже не определена на всех платформах, и где это возможно, не является особенностью конкретного языка. – dmckee
Кажется, это вопросы только о win32 (на основе принятого ответа). Возможно, вопрос должен быть обновлен, чтобы отразить это? – Thomi