Tengo un pequeño ejemplo de un simple objeto que se muestra en pantalla y se mueve y lo que he intentado hacer es dividir el codigo en un archivo.c y otro .h.
Esto tengo en el archivo.h:
- //prototipo de programacion de jugador
- #ifndef JUGADOR_H
- #define JUGADOR_H
- #include "raylib.h"
- typedef struct Jugador{
- int x,y;
- Color color;
- Texture2D imagen;
- }Jugador;
- void cargarTextura();
- void actualizar();
- void pintar();
- void descargarTextura();
- #endif
Esto en el archivo.c:
- //programacion de jugador
- #include "jugador.h"
- //jugador
- Jugador jugador;
- jugador.x = 280;
- jugador.y = 380;
- jugador.color = WHITE;
- void cargarTextura(){
- jugador.imagen = LoadTexture("jugador.png");
- }
- void actualizar(){
- if(IsKeyDown(KEY_LEFT)){
- jugador.x -= 5;
- }else if(IsKeyDown(KEY_RIGHT)){
- jugador.x += 5;
- }
- }
- void pintar(){
- DrawTexture(jugador.imagen,jugador.x,jugador.y,jugador.color);
- }
- void descargarTextura(){
- UnloadTexture(jugador.imagen);
- }
Esto en el archivo donde esta el main:
- //crear objeto
- #include "jugador.h"
- int main(void){
- InitWindow(640,480,"crear objeto");
- SetTargetFPS(60);
- cargarTextura();
- while(!WindowShouldClose()){
- actualizar();
- BeginDrawing();
- ClearBackground(BLACK);
- pintar();
- EndDrawing();
- }
- //descargarTextura();
- CloseWindow();
- return 0;
- }
Cuando compilo me da este error:
- Code: Select all
C:\Users\usuario\AppData\Local\Temp\cc8MSjm8.o:basico27-objeto.c:(.text.startup+0x37): undefined reference to `cargarTextura'
C:\Users\usuario\AppData\Local\Temp\cc8MSjm8.o:basico27-objeto.c:(.text.startup+0x45): undefined reference to `actualizar'
C:\Users\usuario\AppData\Local\Temp\cc8MSjm8.o:basico27-objeto.c:(.text.startup+0x5b): undefined reference to `pintar'
collect2.exe: error: ld returned 1 exit status
No se que es lo que estoy haciendo mal,¿alguien sabe cual es el problema?.