如何使用SDL_LoadBMP编译资源文件

时间:2012-03-19 01:33:48

标签: c++ windows resources bitmap sdl

我必须在Windows 7中使用NetBeans 7.1.1 for C ++,而我正在使用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 :(得分:0)

windres用于将.rc文件编译为.res文件,然后必须将.res和.o文件与ld链接在一起。无论如何,是的,你需要使用SDL_RWFromConstMem()从资源中获取数据。