Как использовать скомпилированный файл ресурсов с SDL_LoadBMP - PullRequest
0 голосов
/ 19 марта 2012

Мне нужно использовать NetBeans 7.1.1 для C ++ в Windows 7, и я пишу приложение с использованием SDL.Я могу заставить SDL_LoadBMP нормально работать с внешним файлом, но я хочу, чтобы мои ресурсы были скомпилированы как часть EXE.

Я обнаружил, что вы можете создавать файлы RES для ссылки на EXE, поэтому я попытался изменить мою сборкускрипт добавив:

.build-pre:
    windres player.res player.o

Затем в настройках компоновщика проекта я добавил player.o в библиотеки.Это компилируется просто отлично, но теперь я не могу понять, как ссылаться на этот файл .o.Я пытался использовать FindResource () и LoadResource (), и они всегда дают мне NULL.Я включил заголовочный файл с #define PLAYER_IMAGE 1000. Код выглядит так:

HRSRC res = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(PLAYER_IMAGE), RT_BITMAP);

if(!res) {
    fprintf(stderr, "The resource couldn't be found.\n");
}

HGLOBAL res_handle = LoadResource(NULL, res);
if(!res_handle) {
    fprintf(stderr, "The resource couldn't be loaded.\n");
}

char* res_data = (char*)LockResource(res_handle);

Я на правильном пути?Если так, что я делаю не так?Если нет, то что мне делать вместо этого?

1 Ответ

0 голосов
/ 09 февраля 2016

windres предназначен для компиляции файлов .rc в файлы .res, затем вам нужно связать файлы .res и .o вместе с ld. В любом случае, да, вы на правильном пути, вам просто нужно использовать SDL_RWFromConstMem () для получения данных из ресурса.

...