pequeña ayuda con SDL_mixter

Iniciado por CSQCasimiro, 2 Agosto 2012, 04:20 AM

0 Miembros y 1 Visitante están viendo este tema.

CSQCasimiro

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.
"Mejora el Algoritmo, no el Código"
"Buscando todos los días ser mejor que ayer"

avesudra

Hola ¿Estás seguro de que has configurado bien la librería en Codeblocks y estás linkeando bien esta misma?
Regístrate en

Ferno

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!

0xDani

No se si tendra mucho que ver, pero a la funcion SDL_Init le pasas dos veces SDL_INIT_AUDIO.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

CSQCasimiro

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.
"Mejora el Algoritmo, no el Código"
"Buscando todos los días ser mejor que ayer"

avesudra

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.
Regístrate en

CSQCasimiro

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 =/
"Mejora el Algoritmo, no el Código"
"Buscando todos los días ser mejor que ayer"

avesudra

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!
Regístrate en

CSQCasimiro

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

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
"Mejora el Algoritmo, no el Código"
"Buscando todos los días ser mejor que ayer"