No sé si hay alguien que esté programando con objetos aparte de Psyk0killer, pero tengo un problema al compilar y según he visto en
este tutorial es en tiempo de enlazado(aunque no estoy seguro).
Tengo un archivo "carga_imagenes.h" en el que pongo todos los includes de las imagenes que tengo que cargar para luego hacerle la llamada. ej:
////////////// carga_imagenes.h ////////////////
#ifndef carga_imagenes_h
#include "imagenes/paleta.pal.c"
#include "imagenes/img1.raw.c"
#include "imagenes/img2.raw.c"
.....
#define carga_imagenes_h
#endif
El caso es que aunque tenga las #ifndef, me da un error por hacer repetidos includes de paleta e imágenes(paleta.pal.c e img1.raw.c del ejemplo).
No sé dónde está el error, pues aunque he mirado los man de g++, el make es el que venía en el template de las PALib y es un tanto enrevesado.
Lo que ejecuta el make es:
arm-elf-g++ -g -mthumb-interwork -mno-fpu -O -L/c/devkitPro//PAlib/lib -specs=ds_arm9.specs main.o nave.o pieza.o -LC:/devkitpro/palib/lib -lpa9 -L/c/devkitPro//libnds/lib -lnds9 -o build.elf
y el error que me muestra por pantalla es:
nave.o: In function `nave':
c:/devkitPro/proyectos/PAlibTemplate/source/nave.cpp:4: multiple definition of `arma2_Bitmap'
main.o:c:/devkitPro/proyectos/PAlibTemplate/source/main.cpp:10: first defined here
nave.o:(.rodata+0x100): multiple definition of `arma1_Bitmap'
main.o:(.rodata+0x100): first defined here
nave.o:(.rodata+0x200): multiple definition of `armas_Palette'
main.o:(.rodata+0x200): first defined here
pieza.o: In function `pieza':
Que según he leido es el típico error por no poner las #ifndef.
¿Sabe alguien cómo subsanarlo?.
Un saludo, Nekete.
PD: Pelín espeso el post
EDIT:
Postee en los foros de mollusk y con su consejo lo conseguí hacer funcionar, ha quedado así:
Probé la de Mollusc y.. sí
Lo que había que hacer era:
////////////////CARGA_IMAGENES.H//////////////////////
#ifndef carga_imagenes_h
extern const unsigned char arma1_Bitmap[256] __attribute__ ((aligned (4)));
extern const unsigned char arma2_Bitmap[256] __attribute__ ((aligned (4)));
extern const unsigned short armas_Palette[256] __attribute__ ((aligned (4)));
#define carga_imagenes_h = 1
#endif
////////////////CARGA_IMAGENES.CPP//////////////////////
#ifndef carga_imagenes_h
#include "imagenes/armas/armas.pal.c"
#include "imagenes/armas/arma1.raw.c"
#include "imagenes/armas/arma2.raw.c"
#define carga_imagenes_h = 1
#endif
Un saludo, Nekete.