Asensin LibSDL1.2dev paketin, ja yritin kääntää ohjelmaa komentoriviltä:
$ g++ -o SDLTesti SDLTesti.cpp -lSDL
Mutta kääntäjä herjaa:
SDLTesti.cpp:1:63: error: SDL\SDL: No such file or directory
SDLTesti.cpp: In function ‘int main(int, char**)’:
SDLTesti.cpp:7: error: ‘SDL_INIT_VIDEO’ was not declared in this scope
SDLTesti.cpp:7: error: ‘SDL_Init’ was not declared in this scope
SDLTesti.cpp:9: error: ‘stderr’ was not declared in this scope
SDLTesti.cpp:9: error: ‘SDL_GetError’ was not declared in this scope
SDLTesti.cpp:9: error: ‘fprintf’ was not declared in this scope
SDLTesti.cpp:15: error: ‘SDL_Surface’ was not declared in this scope
SDLTesti.cpp:15: error: ‘naytto’ was not declared in this scope
SDLTesti.cpp:22: error: ‘SDL_HWSURFACE’ was not declared in this scope
SDLTesti.cpp:22: error: ‘SDL_FULLSCREEN’ was not declared in this scope
SDLTesti.cpp:22: error: ‘SDL_SetVideoMode’ was not declared in this scope
SDLTesti.cpp:27: error: ‘SDL_Delay’ was not declared in this scope
SDLTesti.cpp:29: error: ‘SDL_Quit’ was not declared in this scope
Mitä onnistuin mokaamaan?
EDIT:
Koodi (Ohjelmointiputkan oppaasta)
#include <SDL\SDL> // sisällytetään SDL:n otsikkotiedostot
int main(int argc, char *argv[]) {
// nyt meidän tulee alustaa SDL. Tämä onnistuu SDL_Init() funktiolla, jolle annetaan parametrina
// tieto siitä, mitkä SDL:n osat alustetaan, tässä tapauksessa vain video-ominaisuudet
if( SDL_Init(SDL_INIT_VIDEO) < 0 ) // paluuarvon ollessa pienempi kuin 0, tapahtui virhe
{
fprintf(stderr, "SDL:n alustus ei onnistunut: %s\n", SDL_GetError()); // virheestä tiedot tiedostoon
return 0; // lopetetaan ohjelma
}
// SDL on nyt alustettu virheettömästi, seuraavaksi onkin aika vaihtaa resoluutiota
// ensin on kuitenkin luotava pinta, joka kattaa näytön sisällön:
SDL_Surface * naytto;
// SDL_Surface on siis SDL:n oma tyyppi, jota käytetään eri pintoja varten, tästä lisää myöhemmin
// sitten resoluution vaihtaminen. SDL_SetVideoMode-funktio vaihtaa resoluution
// parametreina sille annetaan uusi resoluutio, värisyvyys (tässä 32-bittinen) ja sitten ohjausliput
// tässä tapauksessa ohjausliput tarkoittavat, että pinta luodaan näytönohjaimen muistiin ja
// ohjelma asetetaan kokoruututilaan (katso taulukko lopusta)
naytto = SDL_SetVideoMode(1024, 768, 32, SDL_HWSURFACE|SDL_FULLSCREEN);
// peli tähän :D
// odotetaan 5 sekuntia
SDL_Delay(5000);
SDL_Quit(); // "suljetaan" SDL
return 0;
}