PDA

Ver la versión completa : Compilado dll... ejem, so para Fenix



Drumpi
26/01/2009, 14:05
Hola de nuevo:
Mientras aprendo a hacer algo con los módulos, voy a seguir aprendiendo con otras cosillas algo más sencillas. Hoy tocan las librerías de enlace dinámico... las dll en windows, vamos.

Bien, tengo este código:

#include <fxdll.h>

static int suma (INSTANCE * my, int * params) {
int dato_a_devolver;

dato_a_devolver=params[0]+params[1];
return(dato_a_devolver);
}

static int resta (INSTANCE * my, int * params) {
int dato_a_devolver;

dato_a_devolver=params[0]-params[1];
return(dato_a_devolver);
}

FENIX_MainDLL RegisterFunctions (COMMON_PARAMS)
{
FENIX_DLLImport

FENIX_export ("MI_SUMA", "II", TYPE_DWORD, suma);
FENIX_export ("MI_RESTA", "II", TYPE_DWORD, resta);
}



Consiste en una simple dll para Fenix, en plan "hola mundo".
Bien, usando el SDK oficial (dev-cpp y yo ya nos conocimos hace tiempo), he creado un proyecto tipo dll para windows, he añadido a los directorios la carpeta donde estan los headers de Fenix, compile y ¡viola! una dll perfectamente funcional en windows.
Pasemos a la negrita: proyecto, dll para gp2x (.so), codigo, añadimos los mismos .h, compilar, probamos la .so... vuelta al menu.

¿Es cosa del código? ¿O es que necesito otros .h (que no se donde andan, ni con los fuentes de puck :S)? ¿o es que hago algo mal en el proceso?

Si alguien me puede hechar una mano, por favor...

PD: ¿es necesario que los datos devueltos sean de tipo static o son manias del que escribió el tutorial?

animanegra
26/01/2009, 14:09
yo hice en su dia lo mismo, si la compilaba stand alone me funcionaba y si la compilaba para fenix, despues de poner las dependencias estaticas para que no se queje de la glibc y alguna cosa mas. Al final no hubo forma de que funcionase la libreria llamandola desde fenix. Si consigues algo ya diras.

Drumpi
23/02/2009, 13:36
UP al tema. Fenixland y 20 proyectos más dependen de ello.

DMusta1ne
23/02/2009, 14:44
Si alguien me puede hechar una mano, por favor...

PD: ¿es necesario que los datos devueltos sean de tipo static o son manias del que escribió el tutorial?

¡¡Toma ya!! ¡¡Por toda la escuadra!!


UP al tema. Fenixland y 20 proyectos más dependen de ello.

xDDDDDDDDDDDDDD

Drumpi
23/02/2009, 18:42
¡¡Toma ya!! ¡¡Por toda la escuadra!!

Pues haber si no tengo que ponerme la mirilla telescópica con todas las faltas que veo por ahi.

La lista de proyectos ha subido a 21... 22 :P

DMusta1ne
24/02/2009, 12:25
Pues haber si no tengo que ponerme la mirilla telescópica con todas las faltas que veo por ahi.

La lista de proyectos ha subido a 21... 22 :P

No te enfades tito ;) Tu sabes que es un poco por el cachondeo, y otro poco por upear el tema, a ver si alguien se moja, tipo Jojo o Puck, que esto merece la pena echarle un vistazo y echar un cablecillo...

Drumpi
09/03/2009, 13:10
Voy avanzando, a paso de caracol, pero avanzando.
He cambiado las cabeceras del tutorial de Fenix por las que he podido encontrar de la versión 092a. Puede que fuese algo obvio para el ojo experimentado, pero no desde mi punto de noob por estas lides: esta dll no hace uso de ninguna funcion de Fenix declarada en esas cabeceras.
Lo bueno: he conseguido en un caso (creo que era ejecución normal, sin parámetros) ver la "splash screen"...
Lo malo: ...antes del cuelgue.

Querría preguntar a Puck por las librerías que usó para compilar UFenix, porque tengo las del SDK oficial (el de Dev-c++) que aparecen en el wiki, pero sin las librerías del 29-4-08 (que no se cómo se instalan) ni un paquete que estaba tambien en http://dev.gp2x.com/sdk/ con una serie de librerías de los sceners (que tampoco se dónde poner).

Tambien, si es posible, el entorno de programación que usaste y las opciones de compilación, que ya ni idea ^^U

Un saludo.

Drumpi
17/03/2009, 12:10
Bueno, mientras espero alguna respuesta por parte de la gente que sabe, ya que los tutoriales lían más que aclaran, y el 99% son para linux, voy acumulando nuevas dudas:

He estado buscando los fuentes y/o los módulos necesarios para cargar el sistema de ficheros iso9660. Como todos los linux lo traen de serie, sólo encuentro enlaces a páginas de cómo montar otros sistemas de ficheros o imágenes ISO mediante el comando mount. Supongo que no hace falta explicar lo que persigo con esto ¿no?

hardyx
17/03/2009, 15:10
PD: ¿es necesario que los datos devueltos sean de tipo static o son manias del que escribió el tutorial?La palabra "static" delante de una función indica que la función no es exportable sino local al fichero donde está compilada. Lo que sería el "private" en visual basic. Y la razón es porque son funciones privadas, aunque luego se haga un truco para llamarlas.

Sobre lo de montar un cd rom, en esta pagina (http://www.computerhope.com/unix/umount.htm) tienes varios ejemplos. Hay que ponerle el tipo del sistema de ficheros y el nombre del dispositivo, así como el directorio de montaje. Aunque hace tiempo que no toco Linux.

mount -F iso9660 /dev/rdsk/dks0d7vol /cdrom

Drumpi
18/03/2009, 12:42
Ah, vale, entonces supongo que lo de static da igual ponerlo mientras no declare otra variable igual.

Y respecto a lo del CD, relee lo que he escrito: SE montar una unidad de CD, lo que no hay es SOPORTE para el iso9660. La gp2x soporta sólo los siguientes sistemas de ficheros (extraido del /etc/filesystem)

nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev tmpfs
nodev shm
nodev pipefs
ext2
nodev ramfs
vfat
nodev devfs
nodev devpts
yaffs
nodev usbdevfs
nodev usbfs