• Solución sobre desarrollo MonoDevelop usando GTK# en Windows 64 bits



    Para poder correr un programa escrito en C#, que use GTK#, en Windows, primero es necesario instalar GTK# for .NET

    Por lo que el instalador de un programa que usa GTK# debería checar la versión de GTK# ya instalada, si hay una, y si es oportuno ejecutar la instalación de GTK# antes de instalar la aplicación que depende de ella.

    El problema aparece cuando estamos usando GTK# 32 bits en un Windows de 64 bits. Si la solución la creamos en MonoDevelop corriendo en Windows no habrá mayores complicaciones.

    Podemos compilar sin problemas en Windows 64 bits. Pero yo me he topado casos en los cuales después de compilar desde MonoDevelop corriendo en Linux 64 bits, el assembly resultado de la compilación no corre en Windows 64 bits (no hay problema si el sistema es de 32 bits).

    Aún si en las propiedades del proyecto figura como 32 bits. Mientras que al revés sí funciona, compilar en Windows y luego correr en Linux usando Mono.

    Al intentar recompilar el programa usando MonoDevelop en Windows resulta que ahora no encontraba ninguna de las referencias. Desde GTK#, glade, etc. Nada, como si ninguna estuviera instalada. Noten que GTK# sí estaba instalada en el sistema.

    Según las listas de correo del proyecto Mono se debe forzar la arquitectura como de 32 bits. Pero en mi caso, en las propiedades del proyecto ya figuraba como 32 bits.

    La primera vez que tuve este problema lo solucioné yendo a las propiedades del proyecto y volviendo a seleccionar x86 en todas las páginas en las que aparece un Combo Box que permita seleccionar la arquitectura. Luego, al recompilar, se podía correr el programa de nuevo en Windows con total normalidad.

    Pensé que con esto bastaba pero cuando volví a editar el proyecto desde Linux, y recompilé, al querer correrlo en Windows ocurrió lo mismo que la primera vez. E igual que la primera vez las versiones de Windows de 32 bit no se vieron afectadas, pero era imposible correr el programa en Windows de 64 bit. Intenté solucionarlo igual que lo había hecho la primera vez pero no funcionó.

    Lo que sí me funcionó esta segunda vez fue borrar el ejecutable del programa y el archivo pdb que queda en el mismo directorio después de compilar. Luego abrí el archivo de solución (sln) con MonoDevelop y recompilé y ahora sí todo fue como se esperaba.

    No aparecieron errores relacionados con referencias faltantes a GTK#.
    Quisiera poder dar más información sobre esto pero por ahora me es imposible. Simplemente diré que este problema se presenta cada vez que edito el proyecto desde Linux y lo compilo. El resultado de esa compilación corre bien tanto en Linux 32/64 bit como en Windows de 32 bit. Pero para poder correr el programa en Windows 64 bit debo hacer lo que indico más arriba y recompilar, de lo contrario obtengo un montón de errores de referencias a GTK# que no se pueden satisfacer.

    Los archivos pdb sólo se generan si compilamos con el objetivo debug del proyecto. O pasando /debug al compilador.


  • 0 Comentarios:

    Publicar un comentario

    ACCEDE A CODIGO FUENTE GRATIS

    Compartiendo código a través de una plataforma gratuita, compartiendo proyectos y codigo siempre con el lema de Educar es Compartir.

    Oficina Central

    DIRECCIÓN

    Comercial el Rey, Local B58

    CORREO

    angel@nubeclan.com
    soporte@nubeclan.com

    TELEFONO

    +591 326 4587

    MOVILES

    +591 600 07721

    EDUCAR ES COMPARTIR

    Blog

    GitHub

    REDES SOCIALES

    Facebook

    Twiter

    LinkedIn