Esto me sucede a menudo. Tiene uno un problema por resolver y gracias a los tiempos en que vivimos tiene a su disposición prácticamente un océano de herramientas.
Así pasó esta semana en la oficina. Teníamos que desarrollar un pequeño programa que tomara datos de otro software mediante comunicación interprocesos. Cóntabamos solamente con una API que los desarrolladores de dicho software habían publicado. El detalle es que estaba en C++.
Rápidamente pusimos a funcionar un programita tipo cónsola que usaba esta librería en C++. Hurgando aquí y allá en la Internet logramos integrar un montón de código disperso para que el programa hiciera lo que queríamos. Leía los datos del software residente mediante la API, elaboraba con estos datos una estructura en XML y luego enviaba este montón de datos vía HTTP a un servidor web que almacanaba y mostraba dichos datos. ¡Eureka! dijimos todos. Funciona de maravilla. Ahora es cuestión de ponerle cara de programa en Windows y agregarle los periquitos usuales.
Y la cosa no parece tan fácil como suena.
Primero pensamos en hacer la interfaz de usuario en .NET o en mono aprovechando las destrezas que tenemos en C#. Rápidamente creamos la interfaz de usuario con la funcionalidad básica, e incluso con alguna que otra cosa avanzada. Pero craso error, la interfaz gráfica no lo es todo. Perdimos un montón de tiempo tratando de compilar una dll con las clases del API que pudiéramos utilizar en el programa en C#. Resulta que cuando usamos comunicación interprocesos leemos y escribimos en áreas de memoria que no le gusta a la máquina de .NET. A lo mejor hay forma de que funcione, pero el tiempo lo teníamos en contra. Mezclar código “unmanaged” con código “managed” no es cosa fácil. Después de horas y horas de errores y errores tiramos la toalla.
La solución evidente fue hacer el programa en C++ con código nativo de Windows. Suena algo largo y tedioso, sobre todo para los que conocen el API de Windows.
Usemos
MFC pensamos. Después de ir para allá y para acá con las diferentes versiones de Microsoft Visual Studio decidimos que tampoco es algo fácil. Debiera haber algo más sencillo.
Nos acordamos del excelente
Dev-C++ de Bloodshed Software. Lo descargamos pero vimos que es muy poderoso pero sin siquiera algo como MFC. Seguimos buscando y encontramos a
Smartwin una librería sencilla para ventanas licenciada GPL. Ya empezábamos a ver luz.
Luego de descargar Dev-C++ y Smartwin nos enteramos que existe un IDE que los integra a los dos de manera impecable. Se trata de
Sally, A Simple C++ IDE. Sally corre en .NET 1.1 así que lo bajamos también y empezamos a configurarlo para gcc y Smartwin. En menos de una hora todo estaba listo.
Creamos una aplicación Smartwin y le integramos el código del API y las librerías HTTP. En pocas horas ya teníamos lo que queríamos. Y todo con software libre licenciado GPL.
Falta todavía algo para que esta pequeña aplicación salga de su fase de prototipo, pero la funcionalidad básica está completa y ahora lo que queda es la fase de integración con el resto de la arquitectura y embellecerla un poco para que parezca hecha por alguien que sabe lo hace jeje…
You have already tagged this post. Your tags: