Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: CSQCasimiro en 2 Agosto 2012, 04:20 am



Título: pequeña ayuda con SDL_mixter
Publicado por: CSQCasimiro en 2 Agosto 2012, 04:20 am
hola, como andan, espero que bien.
verán, ando estudiando por mi cuenta lo que es la librería SDL y la programación con respecto a video juegos, usando base linux ( ubuntu) y de IDE Code::blocks ,
el problema es que, cuando realizo una función como :

Código
  1. Mix_OpenAudio(22050, AUDIO_S16, 2, 4096);
  2. Mix_LoadMUS("turbo tunnel.mp3");  

me salta error de compilación :

undefined reference to 'Mix_OpenAudio'
undefined reference to 'Mix_LoadMUS'



no se si sera por que instale la biblioteca del SDL_mixter por separado de las demás...

bueno, les dejo el codigo completo:

Código
  1.  
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. #include <cstdlib>
  6. #include <stdlib.h>
  7.  
  8. #include <SDL.h> //edite en los include iniciales de mi SDL.h para que incluya a la SDL_mixter que no estaba ya que la agregue mas tarde
  9.  
  10. using namespace std;
  11.  
  12.  
  13.  
  14. int main ( int argc, char** argv )
  15. {
  16.    //inicializamos el video y audio
  17.    SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO|SDL_INIT_AUDIO);
  18.  
  19.    //loop game
  20.    bool GameLoop=true;
  21.  
  22.    //variable para eventos
  23.    SDL_Event evento;
  24.  
  25.    //inicializo el modo grafico con un 500 x 200
  26.    SDL_Surface *screen;
  27.    screen=SDL_SetVideoMode(500,800,32,SDL_HWSURFACE);
  28.    SDL_WM_SetCaption("Ball Race", NULL);
  29.  
  30.    Mix_Music *musica;
  31.   // Inicializamos SDL_mixer
  32.    Mix_OpenAudio(22050, AUDIO_S16, 2, 4096);
  33.    // Cargamos la musica
  34.    musica = Mix_LoadMUS("turbo tunnel.mp3");
  35.  
  36.    while (GameLoop)//loop game
  37.    {
  38.  
  39.  
  40.        SDL_Flip(screen);
  41.    }
  42.  
  43.    return 0;
  44. }
  45.  

bueno, desde ya muchas gracias.


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: avesudra en 2 Agosto 2012, 13:48 pm
Hola ¿Estás seguro de que has configurado bien la librería en Codeblocks y estás linkeando bien esta misma?


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: Ferno en 2 Agosto 2012, 20:40 pm
Como dicen acá arriba, es muy probable que sea un problema de referencia de librerías.
Busca cómo instalar una librería en codeblocks, la configuración correspondiente y si concuerda con lo que hiciste!


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: 0xDani en 2 Agosto 2012, 22:24 pm
No se si tendra mucho que ver, pero a la funcion SDL_Init le pasas dos veces SDL_INIT_AUDIO.

Saludos.


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: CSQCasimiro en 2 Agosto 2012, 23:13 pm
no, linkeada la libreria creo que esta bien, por por ejemplo, cuando declaro
Código:
Mix_Music *musica;
que pertenece a esa librería, no salta error. pero bueno, seguiré investigando gracias.


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: avesudra en 3 Agosto 2012, 00:06 am
Pues mira una cosa no se si será eso pero estate seguro de que no has puesto esto eh:
SDL_mixter.h por que está mal, es SDL_mixer.h, yo que tú probaría a dejar original la SDL.h y poner en tu código SDL/SDL_mixer.h o SDL_mixer.h o donde sea que la tengas.


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: CSQCasimiro en 4 Agosto 2012, 00:02 am
ya esta, ya lo solucione , le agregue unos comandos para que me linkee bien al compilar y lo toma bien, es que era rraro que compila bien antes sin tener que hacer eso =/


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: avesudra en 4 Agosto 2012, 00:21 am
ya esta, ya lo solucione , le agregue unos comandos para que me linkee bien al compilar y lo toma bien, es que era rraro que compila bien antes sin tener que hacer eso =/
¡Qué bien! Si no es mucha molestia podrías poner los comandos que utilizaste , por si otro usuario o persona que tenga el mismo problema sepa como solucionarlo.

¡Un saludo!


Título: Re: pequeña ayuda con SDL_mixter
Publicado por: CSQCasimiro en 4 Agosto 2012, 05:43 am
si, es que en el code blocks hay que ir a la parte de configuración del compilación, agregar las librerías en la solapa de linkeado, y alado en el otro panel escribir:

-L/usr/lib -lSDL -lSDL_mixer -lSDL_net -lpthread -I/usr/include/SDL -D_REENTRANT

en este caso, lo resaltado es lo importante:
fijense que alado del nombre de las librerias: SDL , SDL_mixer y SDL_net hay un -l , eso significa que cuando compile debe tomar esas librerias de la carpeta de /usr/lib en el caso de librerías (no se si estáticas o dinámicas, ya que cambia en cada caso, osea si las le das el #include con "" o con < > si mal no me equivoco)

lo saque del siguiente libro en la parte de apendice, uno altamente recomendable y que lo explica mejor que yo en la parte de apendice:

http://www.mediafire.com/view/?2zlmgjaw92bllor (http://www.mediafire.com/view/?2zlmgjaw92bllor)

y muchas gracias a todos lo que invirtieron su tiempo :D

si sale bien el game se lo dejo, junto con el codigo fuente xd