Ciao a tutti!
Dopo aver studiato l'utilizzo delle classi ed aver così finito il programma base di C++ ho deciso di iniziare lo studio delle SDL.
Così, ho realizzato un primo programmino con set video e gestione eventi:
codice:
#include <iostream>
#include <cstdlib>
#include <SDL/SDL.h>
using namespace std;
int main()
{
//Inizializzo il subsystem video.
if( SDL_Init(SDL_INIT_VIDEO) < 0 )
{
cout << "Errore nell'inizializzazione del sottosistema video:" << SDL_GetError();
return 1;
}
//Imposto SDL_Quit all'uscita del programma.
atexit(SDL_Quit);
//Creo una superficie.
SDL_Surface *screen;
//Imposto la superficie.
screen = SDL_SetVideoMode(800, 600, 0, SDL_HWSURFACE|SDL_DOUBLEBUF);
if( screen == NULL )
{
cout << "Problemi con il settaggio dello schermo:" << SDL_GetError();
return 1;
}
int fine = 0; //Variabile per il controllo del ciclo.
int full_s = 0; //Variabile per il controllo del fullscreen.
Uint32 flags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN;
//Struttura per il controllo degli eventi.
SDL_Event event;
//Inizio il game loop.
while(!fine)
{
//Attendo eventi.
SDL_WaitEvent(&event);
//Imposto la gestione degli eventi che mi interessano.
//In caso di pressione della "X" della finestra.
if( event.type == SDL_QUIT )
fine = 1;
//In caso di pressione tasti sulla tastiera.
if( event.type == SDL_KEYDOWN )
{
//In caso di pressione di "Esc".
if( event.key.keysym.sym == SDLK_ESCAPE )
fine = 1;
//In caso di pressione della barra spaziatrice.
if( event.key.keysym.sym == SDLK_SPACE )
{
if(!full_s)
{
screen = SDL_SetVideoMode(800, 600, 0, flags);
full_s++;
flags = SDL_HWSURFACE|SDL_DOUBLEBUF;
}
else
{
screen = SDL_SetVideoMode(800, 600, 0, flags);
full_s--;
flags = SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN;
}
}
}
}
return 0;
}
Tuttavia, quando provo a compilarlo normalmente con g++ mi da:
SDL_primo.cpp
.text+0x76): undefined reference to `SDL_Init'
SDL_primo.cpp
.text+0x82): undefined reference to `SDL_GetError'
SDL_primo.cpp
.text+0xb7): undefined reference to `SDL_Quit'
SDL_primo.cpp
.text+0xe0): undefined reference to `SDL_SetVideoMode'
SDL_primo.cpp
.text+0xee): undefined reference to `SDL_GetError'
SDL_primo.cpp
.text+0x141): undefined reference to `SDL_WaitEvent'
SDL_primo.cpp
.text+0x19c): undefined reference to `SDL_SetVideoMode'
SDL_primo.cpp
.text+0x1cf): undefined reference to `SDL_SetVideoMode'
collect2: ld returned 1 exit status
Se invece provo a compilarlo con "g++ -Wall -O2 SDL_primo.cpp -o SDL_primo 'sdl-config --cflags --libs'" mi da:
g++: sdl-config --cflags --libs: Nessun file o directory
Dov'è il problema?!