tout le monde.
J´ai créé un projet en C++ avec DevC++, en console application (il n´est pas fini).
J´utilise SDL_Mixer, je l´ai donc téléchargé sur le net, mais dans le dossier, il y avait le fichier header mais pas le .lib ou .a .
J´ai donc linké ce que je trouvais dans mon projet, à savoir SDL_Mixer.qpg.in, et SDL_Mixer.spec.in, et curieusement ça marche, il n´y a aucune erreur là-dessus.
Par contre, DevC++ me dit ça quand j´essaye de compiler:
-"[Linker error] undefined reference to ´Mix_CloseAudio´"
-"In function ´console main´:
[Linker error] undefined reference to ´SDL_main´"
-"Id returned 1 exit status"
-[Build error] [Pong.exe] Error 1"
J´aimerais que vous m´aidiez à résoudre ces problèmes de compilation.
Voici la source de mon programme:
- include <stdlib.h>
- include <iostream>
- include <SDL_Mixer/SDL_mixer.h>
- include <sdl.h>
- include <time.h>
- include <stdio.h>
- include <math.h>
- include <conio.h>
- include <windows.h>
- pragma comment( lib, "sdlmain.lib" )
- pragma comment( lib, "sdl.lib" )
- pragma comment( lib, "sdl_mixer.lib" )
SDL_Surface *screen;
void die(char* message = NULL)
{
Mix_CloseAudio();
SDL_Quit();
if (message != NULL)
printf("DIE: %s\r\n",message);
exit(1);
}
void init_SDL()
{
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) < 0)
{
printf( "Video initialization failed: %s\n", SDL_GetError() );
die();
}
screen = SDL_SetVideoMode(640, 480, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
if (screen == NULL)
{
printf("Unable to set video: %s\n", SDL_GetError());
die();
}
SDL_ShowCursor(0);
}
void intro()
{
SDL_Surface* screen;
SDL_Surface* firstscreen;
SDL_Event event;
SDL_Rect rect1;
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(1024, 768, 32,SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_FULLSCREEN);
SDL_ShowCursor(0);
firstscreen = SDL_LoadBMP("data/intro1.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&rect1);
SDL_Flip(screen);
Sleep(6000);
//////////////////////////////////////////////////
/////////////////////////////////////////////
firstscreen = SDL_LoadBMP("data/intro2.bmp");
rect1.x = 0;
rect1.y = 0;
rect1.w = 1024;
rect1.h = 768;
SDL_BlitSurface(firstscreen,NULL,screen,&rect1);
SDL_Flip(screen);
while(1)
{
while(SDL_PollEvent(&event))
{
if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_RETURN) return;
}
}
}
}
int main()
{
init_SDL();
intro();
return 0;
}
Voici tout ce que j´ai linké:
intro1.bmp
intro2.bmp
libSDL.a
libSDLmain.a
SDL_Mixer.qpg.in
SDL_Mixer.spec.in
Voilà, j´espère que vous pourrez m´aider...