Hola:
Yo no se, pero dedusco que no me han respondido mucho a, mis 2 mails anteriores por que lo que les pregunto alomejor son tonteras, o la lista no se mueve mucho, pues encontre una respuesta micelanea a una de estas.
Hace un tiempo cuando construi un simple archivo programa "hello word", que contenia 3 modulos, no se podía compilar con la versión gcc323b.zip, si se
escribe un makefile algo como:
CC = gcc.exe
AR = ar.exe
AR = ar.exe
OPTIONS = -O2 \
-ffast-math \
-fomit-frame-pointer \
-fmcpu= pentium \
-ffast-math \
-fomit-frame-pointer \
-fmcpu= pentium \
OBJ = browse.cpp \
MapStruct.cpp \
MapMain.cpp
MapStruct.cpp \
MapMain.cpp
%.o : %.cpp
$(CC) -c $(OPTIONS) $< -o $@
$(CC) -c $(OPTIONS) $< -o $@
TileEditor: $(OBJ)
$(CC) -s -O2 -oMapEditor.exe $(OBJ) -lalleg
$(CC) -s -O2 -oMapEditor.exe $(OBJ) -lalleg
clean:
del *.o; *.exe
del *.o; *.exe
"hello word", tiene 3 modulos, en la version anterior a gcc2952b se compila bien, pero en gcc323b, el makefile, da el error:
gcc.exe -s -O2 -oMapEditor.exe browse.cpp MapStruct.cpp MapMain.cpp -lalleg
TileMain.cpp: In function `int BOX_Tiles(int, DIALOG*, int)':
TileMain.cpp:251: warning: assignment to `int' from `double'
TileMain.cpp:251: warning: argument to `int' from `double'
d:/djgpp/tmp/ccYbnble.o(.text+0x8b4):MapMain.cpp: undefined reference to `operator new(unsigned long)'
d:/djgpp/tmp/ccYbnble.o(.text+0x93b):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xa46):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xb78):MapMain.cpp: undefined reference to `operator new(unsigned long)'
d:/djgpp/tmp/ccYbnble.o(.text+0xc2c):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xe54):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.eh_frame+0x12):TileMain.cpp: undefined reference to `___gxx_personality_v0'
collect2: ld returned 1 exit status
make.exe: *** [MapEditor] Error 1
Presione cualquier tecla para continuar . . .
TileMain.cpp: In function `int BOX_Tiles(int, DIALOG*, int)':
TileMain.cpp:251: warning: assignment to `int' from `double'
TileMain.cpp:251: warning: argument to `int' from `double'
d:/djgpp/tmp/ccYbnble.o(.text+0x8b4):MapMain.cpp: undefined reference to `operator new(unsigned long)'
d:/djgpp/tmp/ccYbnble.o(.text+0x93b):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xa46):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xb78):MapMain.cpp: undefined reference to `operator new(unsigned long)'
d:/djgpp/tmp/ccYbnble.o(.text+0xc2c):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.text+0xe54):MapMain.cpp: undefined reference to `operator delete(void*)'
d:/djgpp/tmp/ccYbnble.o(.eh_frame+0x12):TileMain.cpp: undefined reference to `___gxx_personality_v0'
collect2: ld returned 1 exit status
make.exe: *** [MapEditor] Error 1
Presione cualquier tecla para continuar . . .
El error destacado siempre aparecerá, pues los modulos son *.cpp, entonces el error está en la macro CC = gcc.exe, y debe ser cambiado a
CC = gpp.exe.
Bien la mayoría de los ejemplos de allegro vienen en rutinas *.c, como ("grabber"), por eso se compila y corre sin problemas, pero cuando es escrito en un modulo *.cpp, cambian algunas cosas en la sintaxis, como la funcion clip3d_f() y otras, por eso pregunto o no se si me equivoco pero estoy tratando de hacer un utilitario como editor de niveles, y he observado bien la sintaxis en programas *.c, sólo que no me han funcionado como esperaba, las casos que pregunte en los mails anteriores, estan escritos en modulos *.cpp, bien de todos modos espero aclararles un poco la idea, para que me den algo de ayuda. Una Manual para objetos GUI.
Nota:
Yo creo en el manual, alomejor sería bueno un apartado donde se detallen aquellas funciones que requieren una conversion explicita, para no asumir que todas tienen una conversion implícita, y la pequeña diferencia de sintaxis. (una sugerencia...)
de todos modos gracias...
ESB.