efegea
13/02/2006, 21:20
Parece mentira que lo que más se me esta atascando es algo tan básico de C como esto. :rolleyes:
Resulta que tengo el proyecto dividido en varios archivos .c, cada uno se encarga de una parte distinta del programa. En un principio declaré la surface principal en el archivo main.c que es donde esta la inicialización de las SDL. Pero qué pasa si en otro archivo tengo que acceder a esa surface, por ejemplo en una funcion tipo ponimagen(surface origen, surface destino).
Mis (escasos) conocimientos de C y mi libro de C me dicen que tengo que declarar la variable como extern, ¿no es asi? Además la tengo que declarar en cada archivo. Pero GCC me dice que no:
frajan@melee ~/prog/stilish $ ./hacer
rm -f main.o menu.o render.o files.o dl.o stilish
gcc -c `sdl-config --cflags` -O2 main.c -o main.o
gcc -c `sdl-config --cflags` -O2 menu.c -o menu.o
gcc -c `sdl-config --cflags` -O2 render.c -o render.o
render.c:28:2: aviso: no newline at end of file
gcc -c `sdl-config --cflags` -O2 files.c -o files.o
files.c: In function `loadicons':
files.c:96: aviso: asignación se crea un puntero desde un entero sin una conversión
gcc -c `sdl-config --cflags` -O2 dl.c -o dl.o
gcc main.o menu.o render.o files.o dl.o `sdl-config --libs` -lSDL_image -lSDL_ttf -lSDL_gfx -o stilish
main.o: In function `init_sdl':
main.c:(.text+0x59): undefined reference to `srf_screen'
main.c:(.text+0xe6): undefined reference to `srf_screen'
main.o: In function `main':
main.c:(.text+0x1df): undefined reference to `srf_screen'
files.o: In function `loadicons':
files.c:(.text+0x3dd): undefined reference to `srf_screen'
collect2: ld devolvió el estado de salida 1
make: *** [stilish] Error 1
Si la declaro como extern, el enlazador se queja de referencia sin definir...asi que algo hago mal pero no se que es :confused:
Tambien necesito usar en varios archivos una formación de estructuras, en la que cada elemento contiene los datos de cada .gpe/.gpu de la SD, pero me pasa exactamente lo mismo que con la surface principal
Resulta que tengo el proyecto dividido en varios archivos .c, cada uno se encarga de una parte distinta del programa. En un principio declaré la surface principal en el archivo main.c que es donde esta la inicialización de las SDL. Pero qué pasa si en otro archivo tengo que acceder a esa surface, por ejemplo en una funcion tipo ponimagen(surface origen, surface destino).
Mis (escasos) conocimientos de C y mi libro de C me dicen que tengo que declarar la variable como extern, ¿no es asi? Además la tengo que declarar en cada archivo. Pero GCC me dice que no:
frajan@melee ~/prog/stilish $ ./hacer
rm -f main.o menu.o render.o files.o dl.o stilish
gcc -c `sdl-config --cflags` -O2 main.c -o main.o
gcc -c `sdl-config --cflags` -O2 menu.c -o menu.o
gcc -c `sdl-config --cflags` -O2 render.c -o render.o
render.c:28:2: aviso: no newline at end of file
gcc -c `sdl-config --cflags` -O2 files.c -o files.o
files.c: In function `loadicons':
files.c:96: aviso: asignación se crea un puntero desde un entero sin una conversión
gcc -c `sdl-config --cflags` -O2 dl.c -o dl.o
gcc main.o menu.o render.o files.o dl.o `sdl-config --libs` -lSDL_image -lSDL_ttf -lSDL_gfx -o stilish
main.o: In function `init_sdl':
main.c:(.text+0x59): undefined reference to `srf_screen'
main.c:(.text+0xe6): undefined reference to `srf_screen'
main.o: In function `main':
main.c:(.text+0x1df): undefined reference to `srf_screen'
files.o: In function `loadicons':
files.c:(.text+0x3dd): undefined reference to `srf_screen'
collect2: ld devolvió el estado de salida 1
make: *** [stilish] Error 1
Si la declaro como extern, el enlazador se queja de referencia sin definir...asi que algo hago mal pero no se que es :confused:
Tambien necesito usar en varios archivos una formación de estructuras, en la que cada elemento contiene los datos de cada .gpe/.gpu de la SD, pero me pasa exactamente lo mismo que con la surface principal