我必须在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);
我是否在正确的轨道上?如果是这样,我做错了什么?如果不是我应该做什么呢?
答案 0 :(得分:0)
windres用于将.rc文件编译为.res文件,然后必须将.res和.o文件与ld链接在一起。无论如何,是的,你需要使用SDL_RWFromConstMem()从资源中获取数据。