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
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)
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.
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.
Cita de: 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.
Tienes que incluir todos los archivos cpp en la compilación:
g++ main.cpp init.cpp input.cpp...
Los headers también, no?? Con un makefile como se haría??
Cita de: Puntoinfinito en 5 Julio 2013, 16:35 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 ;)
Y el orden de los archivos source durante la compilacion (g++ code1.cpp ...) importa??
Como norma general, no.