viernes, 30 de julio de 2010

VisualStudio 2008, RAD Studio 2010 y Vetusta Morla

Esta semana he estado luchando por compilar unas bibliotecas estáticas de código, supuestamente para VC++6, que tras intentarlo con este compilador, con la versión 2005, y la versión 2008, finalmente sólo compila bajo ciertas condiciones de éste último. Sin embargo, el programa donde hay que integrar las funcionalidades que ofrecen estas bibliotecas está desarrollado bajo RAD Studio 2010, con la consiguiente incompatibilidad.
Me he pegado con la utilidad COFF2OMF para convertir estas LIB de VC a RAD 2010 sin éxito. 
Finalmente, he optado por la generación de una DLL wrapper en Visual C, utilizable por RAD 2010 mediante la importación de la biblioteca estática de enlazado con la herramienta IMPLIB de CodeGear.
Al final, tras varios problemas ya conocidos como la incompatibilidad del naming interno de las bibliotecas DLL con la importación para RAD, así como la generación de algunas funciones decorated cuando RAD no lo espera así, dí con la fórmula correcta para exportar DLL en VC2008 e importarlas con RAD 2010.
  1. Ejecutar el asistente de VC2008 para generar un proyecto Win32. Lo llamamos, por ejemplo, TESTDLL. Pulsamos siguiente y seleccionamos biblioteca dinámica y exportar símbolos.
  2. Las funciones que vamos a declarar en nuestra DLL deben estar dentro de una cláusula "extern "C" { };" para que el naming de VC no sea incompatible con el RAD Studio. Yo incluyo al principio:
    #ifdef __cplusplus
    extern "C" {
    #endif

    Y al final de las cabeceras de las funciones de mi DLL:
    #ifdef __cplusplus
    };

    #endif

    De esta forma tenemos en la DLL las funciones con los nombres sin estar decorated
  3. Para integrarlo en nuestro proyecto del RAD Studio, incluimos el .H con las definiciones de las cabeceras, y el .LIB que generamos mediante el siguiente comando:
    IMPLIB -a TESTDLL.LIB TESTDLL.DLL
     
Puede parecer sencillo, pero a mi me ha costado muchas pruebas hasta dar con la combinación de parámetros y comandos adecuados. Espero que os pueda servir.

Todo este trabajo ha estado aderezado con una excelente banda sonora que me han descubierto la semana anterior y quiero recomendar. Debo reconocer que no me gustaban al principio, pero tienen algo que, después de darles una oportunidad, te acaban enganchando. Son Vetusta Morla y os quiero dejar enlaces (usuarios de Spotify) a los que me parecen los mejores temas del disco Un día en el mundo. Que lo disfrutéis.

sábado, 17 de julio de 2010

Es necesario un cambio

Sí, efectivamente, esta entrada tiende a filosofar un poco, por ser la primera o tal vez por tratar de ser llamativa, pero voy a intentar no extenderme en demasía.

Puede parecer un tópico, un cliché de los títulos (incluso de los titulares de hoy día), una expresión un tanto política si me apuran. Sin embargo, refleja fielmente mi situación (y seguro que la de más de uno), en más de un ámbito: es necesario un cambio.

No hay nada como un período vacacional lo suficientemente largo (no han sido necesarios más de 10 días) para tomar conciencia del punto exacto en el que se encuentra uno mismo, hacia dónde se dirige, y, si es preciso, hacia donde debe virar para no alejarse de aquello que, en principio, buscaba o busca.

Como resultado de este periodo de reflexión, he decidido llevar a cabo algunos cambios, como por ejemplo, la reducción de la procrastinación en aquello que me gusta y que, por tratar de atender otros asuntos o por una mala organización, llevo dejando de lado mucho tiempo.

Así mismo, en el ámbito profesional en el que me muevo, suele dejarse de lado la rigurosidad técnica por adelantar el tiempo de ejecución del proyecto, derivando en un costoso mantenimiento posterior (siempre hay un mantenimiento). Existe, por tanto, una clara falta de análisis que, ahora que lo pienso, va en contra de mis principios profesionales, y a la que voy a poner fin lo antes posible.

No quiero decir con todo esto que hasta ahora haya estado haciendo las cosas mal, ni que ahora vaya a hacerlo todo perfecto. Sólo quiero hacer ver que, en ocasiones, es mejor pararse un momento que seguir corriendo ;)