Problema instalando PAlib y nds en Linux

Buenas!

He intentado instalar las librerias pero me dan algunos problemas... Me he descargado devkitarm, libnds, dswifi, libfat y PAlib. Los he estructurado según este árbol de directorios:

- /mnt/datos/NDS/devkitPro/devkitARM
- libnds
- dswifi
- libfat
- PAlib

He modificado el fichero ~/.bashrc para añadir las variables de entorno siguientes:

DEVKITPRO=/mnt/datos/NDS/devkitPro
DEVKITARM=$DEVKITPRO/devkitARM
PAPATH=$DEVKITARM/PAlib/lib


Guardo y ejecuto source ~/.bashrc para efectuar los cambios. Bien, ahora cuando intento compilar un ejemplo de programa hecho con PAlib, me compila y me genera el .nds sin ningún problema ni error ni nada, pero si intento compilar algún ejemplo de uso de libnds que me he bajado por ahí (los ejemplos) me da errores de compilación y aborta.

Concretamente los errores son:

[sepho@arch hello_world]$ make
main.cpp
arm-eabi-g++ -MMD -MP -MF /mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/build/main.d -g -Wall -O2 -march=armv5te -mtune=arm946e-s -fomit-frame-pointer -ffast-math -mthumb -mthumb-interwork -I/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/include -I/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/build -I/mnt/datos/PFC/NDS/devkitPRO/libnds/include -I/mnt/datos/PFC/NDS/devkitPRO/libnds/include -I/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/build -DARM9 -fno-rtti -fno-exceptions -c /mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp -o main.o
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp: In function 'int main()':
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:38: error: 'touchRead' was not declared in this scope
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:42: error: 'struct touchPosition' has no member named 'rawx'
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:43: error: 'struct touchPosition' has no member named 'rawy'
make[1]: *** [main.o] Error 1
make: *** [build] Error 2


¿Alguna idea? Me parece extraño que si PAlib está basado en libnds, me compile bien PAlib y los ejemplos de libnds no XD

Gracias gente! ;)
Te has bajado los ejemplos que no corresponden a esa versión de libnds. Di la versión de libnds.
ANTONIOND escribió:Te has bajado los ejemplos que no corresponden a esa versión de libnds. Di la versión de libnds.



Buenas ANTONIOND,

La versión de libnds que me descargué es la última que hay disponible.
Sepho escribió:
ANTONIOND escribió:Te has bajado los ejemplos que no corresponden a esa versión de libnds. Di la versión de libnds.



Buenas ANTONIOND,

La versión de libnds que me descargué es la última que hay disponible.

No sabes cuantísimo lo dudo. XD

/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:38: error: 'touchRead' was not declared in this scope
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:42: error: 'struct touchPosition' has no member named 'rawx'
/mnt/datos/PFC/NDS/devkitPRO/ejemplos_libnds/hello_world/source/main.cpp:43: error: 'struct touchPosition' has no member named 'rawy'


Struct touchPosition de las libnds nuevas, incompatibles con PAlib salvo con una versión beta en la que están trabajando:

typedef struct {
u16    rawx; //!< Raw x value from the A2D
u16    rawy; //!< Raw x value from the A2D
u16    px;   //!< Processes pixel X value
u16    py;   //!< Processes pixel Y value
u16    z1;   //!< Raw cross panel resistance
u16    z2;   //!< Raw cross panel resistance
} touchPosition;

Struct touchPosition de las libnds viejas, compatibles con la versión de PAlib que sospecho que tienes:

typedef struct touchPosition {
int16    x;    //!< Raw x value from the A2D
int16    y;    //!< Raw x value from the A2D
int16    px;   //!< Processes pixel X value
int16    py;   //!< Processes pixel Y value
int16    z1;   //!< Raw cross panel resistance
int16    z2;   //!< Raw cross panel resistance
} ALIGN(4) touchPosition;

Como puedes ver, rawx y rawy faltan en las viejas que, lógicamente, son las que tienes... :-| Además, touchRead es una función de las nuevas libnds, antes se leían los datos de otro modo.


¿Tienes una versión de PAlib del estilo de 08XXXX? Si la respuesta es sí, tienes unas libnds viejas, unas PAlib viejas (están trabajando en unas compatibles con las nuevas libnds, aunque son una beta) y los ejemplos de libnds nuevos, que no son compatibles con las libnds viejas.

Bájate la versión 20071023 de los ejemplos y solucionado:
http://sourceforge.net/project/showfile ... _id=159894
Mil gracias tio ;)

Pensé que tenía la última, porque he utilizado un script que me pasaron en el canal de PAlib del irc que publicaron hace un par de días, por lo que pensé que sería la última versión, y además en la web de PAlib las 08xx eran las que me salía como última en sourceforge.

De nuevo gracias, ahora descargo esos ejemplos y comento.

Un saludo!


Edit: Solucionado, mil gracias. Revisando el srcipt efectivamente son las libnds del 2007. ¿Me recomiendas que me instale la última versión de las librerias? O están un poco inestables aún...

Gracias de nuevo.
4 respuestas