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:
[Codebox=c file=Untitled.c]
//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
[/Codebox]
Esto en el archivo.c:
[Codebox=c file=Untitled.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);
}
[/Codebox]
Esto en el archivo donde esta el main:
[Codebox=c file=Untitled.c]
//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;
}
[/Codebox]
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