Если вы используете 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, ...).
Надеюсь, это вам поможет;)
Не могли бы вы дать более подробный пример того, что вы пытаетесь сделать? также, что вы пробовали до сих пор? – NirMH
Ну, я знаю, как читать файл, но я просто не знаю, как сохранить его содержимое в моей программе на C++, чтобы они «оставались там» после закрытия моей программы на C++. –
Открыть новый файл в режиме записи и скопировать его содержимое. –