c ++ - Sådan bruger du kompileret ressourcefil med SDL\_LoadBMP

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skal bruge NetBeans 7.1.1 til C ++ i Windows 7 og jeg skriver en applikation ved hjælp af SDL. Jeg kan få SDL\_LoadBMP til at fungere fint med en ekstern fil, men jeg vil gerne have mine ressourcer kompileret som en del af EXE.


Jeg fandt ud af, at du kan bygge RES-filer for at linke til EXE, så jeg forsøgte at ændre mit build script ved at tilføje:


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


Så i linkerindstillingerne for projektet tilføjede jeg player.o til bibliotekerne. Dette kompilerer fint, men nu kan jeg ikke finde ud af, hvordan man henviser til denne .o fil. Jeg har prøvet at bruge FindResource () og LoadResource () og de giver mig altid NULL. Jeg har inkluderet en header-fil, der har #define PLAYER\_IMAGE 1000. Koden ser sådan ud:


HRSRC res = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(PLAYER\_IMAGE), RT\_BITMAP);

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

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

char* res\_data = (char*)LockResource(res\_handle);


Er jeg på rette spor? Hvis ja, hvad gør jeg forkert? Hvis ikke, hvad skal jeg gøre i stedet?

Bedste reference


windres er til kompilering af .rc filer i .res filer, så skal du linke .res og .o filer sammen med ld. Anyway ja, du er i de rigtige spor, du skal bare bruge SDL\_RWFromConstMem () for at hente dataene fra ressourcen.