Recordaba haber compilado el programa hace algunos meses para ser ejecutado en la PDA de verdad, y que había funcionado correctamente, así que como por suerte tenía alguna copia de seguridad las he utilizado para hacer unas pruebas. La más reciente era de justo el momento en que pasé de usar UG a GLUT|ES para los menús y las ventanas. La he compilado, y el resultado era el mismo que con el avatar, no se mostraba nada en la pantalla, aunque la aplicación se ejecutaba. He probado lo mismo con la copia más antigua, que era del momento justo anterior a que usara GLUT|ES, y al compilar el programa sí que ha funcionado.
Así que el problema parecía estar en esa librería. El día anterior probé varios ejemplos binarios descargados de la página de ZeusCMD para asegurarme de que funiconaba, y así era. Pero entonces he recordado los mensajes de advertencia del linker y todo lo que tuve que hacer para solucionarlos. Esos mensajes solo aparecían al compilar para ARM. He abierto los ejemplos de ZeusCMD y los he recompilado, copiándolos después a la PDA y ejecutándolos. Entonces se ha reproducido el error, la pantalla aparecía negra. Los ejemplos en formato binario que sí que funionaban ya venían compilados y linkados estáticamente, así que parece que el problema es la librería estática de GLUT|ES con la que se enlaza el ejecutable de mi programa al compilarlo.
De hecho, el mensaje de aviso que se muestra:
glutes_static.lib(seccook.obj) : warning LNK4078: multiple '.CRT' sections found with different attributes (40300040)
LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
Al buscarlo en la ayuda del propio eVC, esto es lo que dice:
LINK found two or more sections that have the same name but different attributes.
Possible cause
An import library or exports file was created by a previous version of LINK or LIB.
Recreate the file and relink.
Es decir, para evitar que aparezca habría que recompilar desde los fuentes la librería de GLUT|ES, cosa nada fácil a priori.
He consultado la página de ZeusCMD, por si la forma de instalar GLUT|ES era incorrecta, y he encontrado un párrafo que había olvidado, que dice que al usar el binario o intentar recompilar los fuentes de la librería había personas que tenían problemas, y ofrece una versión recompilada de la susodicha librería estática. La he descargado y copiado en el lugar correspondiente, y una vez más he compilado el programa del avatar. Al ejecutarlo, ¡ha funcionado! Así que era eso, el binario de la librería estática de GLUT|ES para ARM no funciona bien con el Embedded Visual C++.
Después, solo por curiosidad, he deshecho los pasos que tuve que seguir para que no saliera el error del linker que he escrito antes, y he hecho de nuevo la prueba para asegurarme, confirmando el resultado:
- Con la librería glutes_static.lib para ARM original: Mensajes de error y warnings del linker -> Necesidad de modificar parámetros de compilación -> La aplicación no funciona como debería.
- Con la librería glutes_static.lib para ARM recompilada por ZeusCMD: No aparecen mensajes de error ni warnings -> La aplicación funciona correctamente.
Solucionado esto, espero poder ya de una vez integrar la librería de Loquendo en el programa del avatar.

No hay comentarios:
Publicar un comentario