Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Puntoinfinito en 5 Julio 2013, 01:26 am



Título: Error POO en SDL
Publicado por: Puntoinfinito en 5 Julio 2013, 01:26 am
Hola!!

Estoy aplicando mis conocimientos de POO a SDL y para comenzar queria hacer un pong, pero me da unos errores diciendo de que no he definido las funciones de las clases cuando si lo he hecho en los .cpp de cada header!! :/ Bueno, os dejo con el problema que es global xD y el codigo para que os fijeis en que me falta. Saludos!!

Citar
/tmp/ccuLFlB8.o: En la función `main':
main.cpp:(.text+0x39): referencia a `init::Init(std::string)' sin definir
main.cpp:(.text+0x5b): referencia a `input::getKey()' sin definir
main.cpp:(.text+0x65): referencia a `input::getKey()' sin definir
main.cpp:(.text+0x6f): referencia a `raquet::moveRaquet()' sin definir
main.cpp:(.text+0x79): referencia a `raquet::moveRaquet()' sin definir
main.cpp:(.text+0xab): referencia a `graphics::loadImage(std::string)' sin definir
main.cpp:(.text+0xb8): referencia a `raquet::getY()' sin definir
main.cpp:(.text+0xcc): referencia a `collision::checkCollision(int, SDL_Surface*, int)' sin definir
main.cpp:(.text+0x116): referencia a `graphics::loadImage(std::string)' sin definir
main.cpp:(.text+0x123): referencia a `raquet::getY()' sin definir
main.cpp:(.text+0x137): referencia a `collision::checkCollision(int, SDL_Surface*, int)' sin definir
main.cpp:(.text+0x159): referencia a `raquet::getY()' sin definir
main.cpp:(.text+0x166): referencia a `raquet::getX()' sin definir
main.cpp:(.text+0x19a): referencia a `graphics::loadImage(std::string)' sin definir
main.cpp:(.text+0x1ac): referencia a `graphics::drawImage(SDL_Surface*, int, int)' sin definir
main.cpp:(.text+0x1ce): referencia a `raquet::getY()' sin definir
main.cpp:(.text+0x1db): referencia a `raquet::getX()' sin definir
main.cpp:(.text+0x20f): referencia a `graphics::loadImage(std::string)' sin definir
main.cpp:(.text+0x221): referencia a `graphics::drawImage(SDL_Surface*, int, int)' sin definir
main.cpp:(.text+0x245): referencia a `SDL_Flip' sin definir
main.cpp:(.text+0x24f): referencia a `SDL_Delay' sin definir
collect2: error: ld devolvió el estado de salida 1

(https://www.opaef.es/opencms/export/sites/opaef/web/portal/images/icos/zip.gif) Código : https://docs.google.com/file/d/0B_bICudPUUcpMVNkOFFSMkU3d2s/edit?usp=sharing





Título: Re: Error POO en SDL
Publicado por: pacoperico en 5 Julio 2013, 14:26 pm
Asi a bote pronto diria que la biblioteca SDL no la tienes correctamente instalada o configurada. Posiblemente el linker no enlaza con los archivos de SDL. Echale un ojo a este enlace:

http://lazyfoo.net/SDL_tutorials/lesson01/index.php (http://lazyfoo.net/SDL_tutorials/lesson01/index.php)


Título: Re: Error POO en SDL
Publicado por: amchacon en 5 Julio 2013, 14:34 pm
Error de linkado.

¿Cómo compilas tú? Si lo haces con líneas de comandos tienes que escribir el nombre de todos los archivos (o usar un makefile).

Si usas un IDE como Codeblocks, tienes que meter todos los archivos en un mismo proyecto.

Además de eso, tienes que inicializar el vídeo, las SDL y tienes que "linkar" con la librería SDL... Si me dices tu SO y las herramientas que utilizas te lo explico.


Título: Re: Error POO en SDL
Publicado por: Puntoinfinito en 5 Julio 2013, 16:25 pm
Edito con vim, y sí, estaba compilando desde la terminal. :/ El vídeo ya lo inicio en el código (init.cpp) y que yo sepa linkeo ya la librería SDL.


Título: Re: Error POO en SDL
Publicado por: amchacon en 5 Julio 2013, 16:33 pm
Edito con vim, y sí, estaba compilando desde la terminal. :/ El vídeo ya lo inicio en el código (init.cpp) y que yo sepa linkeo ya la librería SDL.
Tienes que incluir todos los archivos cpp en la compilación:

Código
  1. g++ main.cpp init.cpp input.cpp...


Título: Re: Error POO en SDL
Publicado por: Puntoinfinito en 5 Julio 2013, 16:35 pm
Los headers también, no?? Con un makefile como se haría??


Título: Re: Error POO en SDL
Publicado por: amchacon en 5 Julio 2013, 16:36 pm
Los headers también, no??
No, los headers se añaden solitos con el #include

Con Codeblocks todo esto es más fácil  ;)


Título: Re: Error POO en SDL
Publicado por: Puntoinfinito en 5 Julio 2013, 16:45 pm
Y el orden de los archivos source durante la compilacion (g++ code1.cpp ...) importa??


Título: Re: Error POO en SDL
Publicado por: amchacon en 5 Julio 2013, 16:48 pm
Como norma general, no.