Мой код для загрузки файла с ресурса приведен ниже
void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
HMODULE handle = ::GetModuleHandle(NULL);
HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),MAKEINTRESOURCE(type));
HGLOBAL rcData = ::LoadResource(handle, rc);
size = ::SizeofResource(handle, rc);
data = static_cast<const char*>(::LockResource(rcData));
}
Этот код отлично работает, если это просто приложение. Когда тот же код используется в качестве DLL, я получаю нулевое значение в rc, который публикует FindResource.
Я определил символы в находчивом файле, как показано ниже:
#define TEXTFILE 256
#define IDR_MYTEXTFILE 105
Также файл, который мне нужно добавить, определен в файле rc:
IDR_MYTEXTFILE TEXTFILE "C:/Docs/Lib.XML"
Как я упоминал ранее, этот код прекрасно работает, когда его приложение, преобразование его в DLL создает проблему.
Функция LoadFileInResource вызывается, как указано ниже:
LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);