Test Foro de elhacker.net SMF 2.1

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 (c++) [Seleccionar]
Mix_OpenAudio(22050, AUDIO_S16, 2, 4096);
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 (c++) [Seleccionar]


#include <iostream>
#include <cstring>

#include <cstdlib>
#include <stdlib.h>

#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

using namespace std;



int main ( int argc, char** argv )
{
    //inicializamos el video y audio
    SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO|SDL_INIT_AUDIO);

    //loop game
    bool GameLoop=true;

    //variable para eventos
    SDL_Event evento;

    //inicializo el modo grafico con un 500 x 200
    SDL_Surface *screen;
    screen=SDL_SetVideoMode(500,800,32,SDL_HWSURFACE);
    SDL_WM_SetCaption("Ball Race", NULL);

    Mix_Music *musica;
   // Inicializamos SDL_mixer
    Mix_OpenAudio(22050, AUDIO_S16, 2, 4096);
    // Cargamos la musica
    musica = Mix_LoadMUS("turbo tunnel.mp3");

    while (GameLoop)//loop game
    {


        SDL_Flip(screen);
    }

    return 0;
}


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
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
Cita de: 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 =/
¡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