我必须在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 回答
windres用于将.rc文件编译为.res文件,然后必须将.res和.o文件与ld链接在一起 . 无论如何,你是在正确的轨道上,你只需要使用SDL_RWFromConstMem()来从资源中获取数据 .