Ca fais à peine quelques mois que j'fais de la programmation (en C) et j'aimerais
faire un peu de 2d et de 3d avec SDL.
Je regarde des tutoriaux sur SDL, j'essaye de compiler un programme donné en
exemple et il me met :
linker error : undefined reference to 'SDL_MapRGB'
linker error : undefined reference to 'SDL_FillRect'
...
linker error : undefined reference to 'SDL_FreeSurface'
linker error : undefined reference to 'WinMain@16'
C'est quoi le blème : problème avec les librairies, ou autre chose ??!!
Ca m'énerve
Programme :
#include <SDL/SDL.h>
#include <stdio.h>
#include <stdlib.h>
// Surfaces et rectangle
SDL_Rect rect;
SDL_Surface *Screen, *rectangle;
// Fonction d'affichage
void affichage()
{
// Coloration des surfaces
SDL_FillRect(rectangle, NULL,
SDL_MapRGB(Screen->format, 255, 0, 0));
SDL_FillRect(Screen, NULL, 0);
// Définition de la zone à l'écran
rect.x = (Screen->w / 2) - (rect.w / 2);
rect.y = (Screen->h / 2) - (rect.h / 2);
rect.w = Screen->w / 2;
rect.h = Screen->h / 2;
// Blit de la surface à l'écran et affichage
SDL_BlitSurface(rectangle,NULL,Screen,&rect);
SDL_Flip(Screen);
}
int main (int argc, char **argv)
{
// Initialisation de SDL
if (SDL_Init (SDL_INIT_VIDEO) < 0) {
fprintf (stderr, "Erreur d'initialisation de SDL: %s\n",
SDL_GetError ());
return 1;
}
atexit (SDL_Quit); // Pour quitter proprement
// Initialisation de SDL_Video
Screen = SDL_SetVideoMode (640, 480, 16, SDL_SWSURFACE|
SDL_DOUBLEBUF);
if (Screen == NULL) {
fprintf (stderr, "Erreur d'init du mode video: %s\n",
SDL_GetError ());
return 2;
}
// Allocation de la surface (pour l'instant vide)
rectangle = SDL_CreateRGBSurface(SDL_SWSURFACE,
320, 240, 32,
0, 0, 0, 0);
// Titre de fenêtre
SDL_WM_SetCaption ("Première appli SDL", NULL);
// Boucle infinie
while (/*true*/1)
{
SDL_Event event; // Fermer la fenêtre proprement
if (SDL_PollEvent (&event) && event.type==SDL_QUIT)
break;
affichage(); // Mise à jour de l'écran
}
// Libération de la surface rectangle
SDL_FreeSurface(rectangle);
return 0;
}