Если вы используете Microsoft Visual Studio, то это довольно просто:
В диалоговом окне «Добавить ресурс» нажмите «Импорт», выберите «Все файлы (. )», чтобы он мог импортировать исполняемый файл, а затем просто выберите нужный файл. Когда появится диалоговое окно «Тип настраиваемого ресурса», введите RCDATA в поле «Тип ресурса».
Если вы откроете файл .rc, вы увидите что-то вроде этого:
/////////////////////////////////////////////////////////////////////////////
//
// RCDATA
//
IDR_RCDATA1 RCDATA "myexecutable.exe"
и он сгенерирует resource.h со следующей строкой:
#define IDR_RCDATA1 101
В коде вы получаете к нему доступ так:
#include "resource.h"
#include <windows.h>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyExecutable = ::LockResource(myResourceData);
return 0;
}
где pMyExecutable - указатель на первый байт этого исполняемого файла. Как узнать размер этого ресурса или другую полезную информацию вы найдете здесь:
http://msdn.microsoft.com/en-us/library/ff468902(v=vs.85).aspx
... вот пример, как вы могли бы сохранить бинарный ресурс, как этот, на диске:
#include "resource.h"
#include <windows.h>
#include <fstream>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
unsigned int myResourceSize = ::SizeofResource(NULL, myResource);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyExecutable = ::LockResource(myResourceData);
std::ofstream f("C:\\x.exe", std::ios::out | std::ios::binary);
f.write((char*)pMyExecutable, myResourceSize);
f.close();
return 0;
}
Когда вы создаете проект с таким ресурсом, этот ресурс станет частью вашей "программы" (.exe, .dll, ...).
Надеюсь, это поможет вам;)