Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: SDL ropleema

p-p [21.03.2005 17:16:05]

#

Nyt kävin alottelemaa SDL:n perusteita nii tuli heti onkelma vastaan. Ongelma on se, että olen tehnyt kuvan blittaus funktion. Jos sitä ei käytä koodissa, niin kääntyy EXEksi, mutta jos käyttää, niin käy valittamaan.

Koodini on tässä:

#include <SDL/SDL.h>
#include <stdio.h>

void loadBMP(int tiedosto, SDL_Surface * naytto, SDL_Surface * kuva, int x, int y);

int main (int argc, char *argv[])
{
    if(SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        fprintf(stderr, "SDL:n alustus ei onnistunut.\n%s", SDL_GetError);
        SDL_Quit();
        return 0;
    }
    SDL_Surface * naytto;
    SDL_Surface * kuva;
    naytto = SDL_SetVideoMode(800, 600, 16, SDL_HWSURFACE|SDL_FULLSCREEN|SDL_DOUBLEBUF);
    piirra("kuva.bmp", naytto, kuva, 50, 50);
    SDL_Delay(5000);
    SDL_Quit();
    return 0;
}

void piirra(char tiedosto[8], SDL_Surface * naytto, SDL_Surface * kuva, int x, int y)
{
     kuva = SDL_LoadBMP(tiedosto);
     SDL_Rect coords;
     coords.x = x;
     coords.y = y;
     SDL_BlitSurface(kuva, NULL, naytto, &coords);
     SDL_Flip(naytto);
}

Nytten se herjaa "piirra" funktiosta. Sen kun ottaa ennen SDL_Delayta pois niin ei virheita.

EDIT:Virhe:24 E:\C\SDL\main.c conflicting types for 'piirra'
17 E:\C\SDL\main.c previous implicit declaration of 'piirra' was here
E:\C\SDL\Makefile.win [Build Error] [main.o] Error 1

Heikki [21.03.2005 17:22:36]

#

Tuo virhe johtuu siitä, että et ole esitellyt tuota piirä-funktiota. Lisääppä ennen main-funktiota rivi:

void piirra(char tiedosto[8], SDL_Surface * naytto, SDL_Surface * kuva, int x, int y);

tai vaihtehtoisesti siirrä piirrä-funktio ennen main-funktiota. Lisäksi sinulla on nyt turha määrittely ennen main funktiota (funktiolle loadBMP), sillä tullaista funktiota ei löydy sinulta.

Btw, ei kannata aina ladatessa ladata bittikarttaa tiedostosta, se on _erittäin_hidasta_. Kannattaa vaikka välittää piirrettävän kuvan osoitin (niin kuin välitätkin SDL_Surface *kuva:n, joka tosin on tyhjä).

Kannattaa kuitenkin hommata perusosaaminen C/C++:sta ennen grafiikkaohjelmointia, tuo funktioiden esittely on aikalailla perusasiaa (ei millään pahalla).

Metabolix [21.03.2005 20:48:58]

#

Ja et myöskään voi määritellä "char tiedosto[8]" ainakaan, jos syötät sille char[9]:n (muista, että lopussa on nollamerkki). Laita siis "char *tiedosto"

Vastaus

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

Tietoa sivustosta