anibarro
27/01/2006, 02:09
Bueno, gracias a las pistas que me dio Oankali he conseguido usar las funciones normales de manejo de ficheros en la GP32, pero tengo un problema que no se solucionar.
Lo unico que he conseguido es reducir el problema a lo siguiente:
Con unos cuantos .c y .h, creo una libreria estatica (.a), que luego uso en el gpmain.c.
Todas los include y demas cosas del estilo estan en un .h, que esta incluido en todo los ficheros .c y .h de esta libreria.
Las funciones de esta libreria funcionan muy bien, pero a la hora de manejar ficheros empiezan los problemas. Incluyendo la libreria gpwrap.h que puse en otro mensaje, en principio todo funciona, uno de los .c carga pcx y otro .3ds. La que carga pcx funciona "bien", y lo pongo entre comillas porque despues de cargar un pcx, intente cargar un 3ds y la funcion "open" no era capaz de abrir el archivo.
Entonces, despues de cargar el pcx, para probar, abri un archivo con el fopen y no lo abria, probe a cargarlo con GpFileOpen por si el gpwrap funcionaba mal, y tampoco lo abria. Ni poniendo GpFatInit, ni sin ponerlo, nada.
Haciendo mas pruebas he visto que fue casualidad que abriese bien el pcx, porque poniendo directamente dentro del main este codigo:
ulong bytesLeidos;
FILE *f = fopen(gp:\\GPMM\\prueba.3ds,"rb");
if (f){
bytesLeidos = fread(buffer, 1, 10, f);
}
Lo abre y lo lee perfectamente, pero si meto la siguiente funcion en el .c que lee pcx por ejemplo, y la llamo desde el main, el programa se cuelga:
Leefichero(char buffer[11]) {
ulong bytesLeidos;
FILE *f = fopen(gp:\\GPMM\\prueba.3ds,"rb");
if (f){
bytesLeidos = fread(buffer, 1, 10, f);
}
}
Me estoy mareando de tanto probar :confused: y me he quedado sin ideas sobre que puede estar pasando :( La libreria la compilo exactamente con las mismas opciones de compilacion que el gpmain.c, en el gpmain.c incluyo la misma cabecera con los mismos includes, defines, etc.. que en los otros ficheros. No entiendo que puede estar pasando, menos aun cuando el resto de funciones van bien, solo me pasa con las que tratan los ficheros ( para mas cachondeo, han llegado a funcionar como decia antes...) y no es problema del GpFatInit...¿Alguna idea por caridad? :llorosa:
Lo unico que he conseguido es reducir el problema a lo siguiente:
Con unos cuantos .c y .h, creo una libreria estatica (.a), que luego uso en el gpmain.c.
Todas los include y demas cosas del estilo estan en un .h, que esta incluido en todo los ficheros .c y .h de esta libreria.
Las funciones de esta libreria funcionan muy bien, pero a la hora de manejar ficheros empiezan los problemas. Incluyendo la libreria gpwrap.h que puse en otro mensaje, en principio todo funciona, uno de los .c carga pcx y otro .3ds. La que carga pcx funciona "bien", y lo pongo entre comillas porque despues de cargar un pcx, intente cargar un 3ds y la funcion "open" no era capaz de abrir el archivo.
Entonces, despues de cargar el pcx, para probar, abri un archivo con el fopen y no lo abria, probe a cargarlo con GpFileOpen por si el gpwrap funcionaba mal, y tampoco lo abria. Ni poniendo GpFatInit, ni sin ponerlo, nada.
Haciendo mas pruebas he visto que fue casualidad que abriese bien el pcx, porque poniendo directamente dentro del main este codigo:
ulong bytesLeidos;
FILE *f = fopen(gp:\\GPMM\\prueba.3ds,"rb");
if (f){
bytesLeidos = fread(buffer, 1, 10, f);
}
Lo abre y lo lee perfectamente, pero si meto la siguiente funcion en el .c que lee pcx por ejemplo, y la llamo desde el main, el programa se cuelga:
Leefichero(char buffer[11]) {
ulong bytesLeidos;
FILE *f = fopen(gp:\\GPMM\\prueba.3ds,"rb");
if (f){
bytesLeidos = fread(buffer, 1, 10, f);
}
}
Me estoy mareando de tanto probar :confused: y me he quedado sin ideas sobre que puede estar pasando :( La libreria la compilo exactamente con las mismas opciones de compilacion que el gpmain.c, en el gpmain.c incluyo la misma cabecera con los mismos includes, defines, etc.. que en los otros ficheros. No entiendo que puede estar pasando, menos aun cuando el resto de funciones van bien, solo me pasa con las que tratan los ficheros ( para mas cachondeo, han llegado a funcionar como decia antes...) y no es problema del GpFatInit...¿Alguna idea por caridad? :llorosa: