Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++ SDL_Image sähläystä

Sivun loppuun

Janezki [05.03.2009 13:28:42]

#

Olen yrittänyt saada tässä 3 tuntia SDL_Imagea lataamaan kuvaa, mutta se ei ole yhteistyökykyinen. Tuossa vähän koodia, pyytäisin että kukaan ei takertuisi koodin järkevyyteen koska kyseessä on vain oppimisprojekti.

#include <cstdlib>
#include <SDL.h>
#include <string>
#include <SDL_image.h>

void SDL_Local_DrawSimpleImage(const char* filename, int x, int y)
{
    SDL_Surface* src;
    SDL_Rect dst_rect;

    src = IMG_Load(string(workFolder + graphicsFolder + filename).c_str());
    if (!src) //If load fails then add a log note
    {
        AddToLog(IMG_GetError());
    }
    else    //If image loads successfully then draw it and release source surface
    {
        dst_rect.x = x;
        dst_rect.y = y;
        SDL_BlitSurface(src, NULL, screen, &dst_rect);
        SDL_Flip(screen);
        SDL_FreeSurface(src);
    }
}

Ohjelma kääntyy mutta kuvaa ei näy.stdout.txt sanoo että "unsupported image format". Kuva on 24-bittinen bmp, ja ohjelma näyttää myös löytävän sen. SDL:n oma SDL_LoadBMP toimii hyvin, eli voisi olettaa että SDL on asennettu oikein. Alustana käytän Code::Blocksia.

SDL_Imagen asennuksesta sen verran että seuraavat dll:t on ohjelman debug-kansiossa:
SDL.dll
SDL_image.dll
zlib1.dll
libpng12-0.dll
jpeg.dll
libtiff-3.dll

Projekti luonnollisesti löytää SDL_image.h:n, ei tuo muuten kääntyisikään. Löysin myös tiedoston SDL_image.lib ja linkitin sen projektiin. Varmaan huomionarvoista on myös se että en osannut liittää SDL_imagen c-tiedostoja muuten mukaan kuin lisäsin ne vain raakasti projektiin, ilmeisesti on olemassa hienovaraisempikin tapa.

tkok [05.03.2009 13:33:19]

#

Katsoppa tästä ootko asennuksen tehny oikein:

http://lazyfoo.net/SDL_tutorials/lesson03/index.php

Janezki [05.03.2009 13:50:47]

#

tkok kirjoitti:

Katsoppa tästä ootko asennuksen tehny oikein:

http://lazyfoo.net/SDL_tutorials/lesson03/index.php

Kaikki vaiheet näyttää olevan käytynä.

rndprogy [05.03.2009 13:53:28]

#

Mikset voi sitten käyttää SDL:n omaa bmp:n latausfunktiota, jos se kerta toimii?
Onnistuuko muiden, kuin bmp-kuvien lataus tuolla IMG_loadilla? Kokeilepa ladata vaikka PNG-kuva.

Gaxx [05.03.2009 17:12:00]

#

Janezki kirjoitti:

Löysin myös tiedoston SDL_image.lib ja linkitin sen projektiin. Varmaan huomionarvoista on myös se että en osannut liittää SDL_imagen c-tiedostoja muuten mukaan kuin lisäsin ne vain raakasti projektiin, ilmeisesti on olemassa hienovaraisempikin tapa.

Jos kerta olet linkittänyt .lib:n, niin ei niitä .c tiedostoja tarvitse. Tämä tuskin kuitenkaan ratkaisee itse ongelmaa.

Janezki [05.03.2009 17:24:17]

#

rndprogy kirjoitti:

Mikset voi sitten käyttää SDL:n omaa bmp:n latausfunktiota, jos se kerta toimii?
Onnistuuko muiden, kuin bmp-kuvien lataus tuolla IMG_loadilla? Kokeilepa ladata vaikka PNG-kuva.

Kokeilin png-kuvan latausta, mutta ei tapahtunut sen kummempaa. Ja jos joku formaatti on nyt toimiakseen tuolla kirjastolla niin bmp. Haluan saada muut formaatit kuin bmp:n toimimaan mahdollisten tulevaisuuden peliprojektien takia, onhan joku png:kin aika kilpailukykyinen formaatti.

Gaxx kirjoitti:

Janezki kirjoitti:

Löysin myös tiedoston SDL_image.lib ja linkitin sen projektiin. Varmaan huomionarvoista on myös se että en osannut liittää SDL_imagen c-tiedostoja muuten mukaan kuin lisäsin ne vain raakasti projektiin, ilmeisesti on olemassa hienovaraisempikin tapa.

Jos kerta olet linkittänyt .lib:n, niin ei niitä .c tiedostoja tarvitse. Tämä tuskin kuitenkaan ratkaisee itse ongelmaa.

Joo eli .lib on sama kuin Delphin .doc ja .c sama kuin .pas (?)

vehkis91 [05.03.2009 17:44:12]

#

.c on c-kielen kooditiedosto, eli sisältää koodia.

Janezki [05.03.2009 19:10:10]

#

Gaxx kirjoitti:

Jos kerta olet linkittänyt .lib:n, niin ei niitä .c tiedostoja tarvitse. Tämä tuskin kuitenkaan ratkaisee itse ongelmaa.

lollol. Itse asiassa ratkaisi. Poistin kaikki IMG -alkuiset .c -tiedostot projektista ja kuva alkoi näkymään välittömästi. Myös png-kuvat näkyy. Aika vekkulia, kiitos avusta :)

Metabolix [06.03.2009 09:47:35]

#

GCC:n (MinGW:n) kirjastotiedostojen nimet ovat muotoa lib*.a, .lib-päätteiset taas ovat usein VC++:n kirjastoja. Voi olla, että GCC osaa joskus arvata väärästäkin nimestä, mitä käyttäjä yrittää, mutta kannattaa tietenkin valita aina oikea kirjasto. Komentorivillä oikea asetus on -lSDL_image, kunhan tarvittava tiedosto löytyy kääntäjän tuntemista hakemistoista.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta