Hace relativamente poco tiempo, un mes o dos, buscando cómo hacer funcionar la biblioteca libdl en Fortran, me tropecé con este artículo de Aleksandar Donev, en el que explica muy rápidamente cómo hacerlo, y además de un modo que facilita la interprogramación entre Fortran y C en general.
Básicamente, comienza creando las rutinas que usaremos para pasar cadenas de caracteres de C (terminadas en \0) a Fortran (con indicación de longitud) y viceversa. A continuación crea las interfaces Fortran para las principales funciones de libdl y luego muestra un ejemplo.
Sencillo, conciso y correcto.
Claro que no funciona «nada más sacarlo de la caja», por dos razones. Por un lado, utiliza punteros a funciones, algo que entró en Fortran 2003 (en C lo tenemos «de toda la vida»). Y por otro, los valores RTLD_LAZY, RTLD_NOW, RTLD_GLOBAL y RTLD_LOCAL hay que hallarlos a mano antes de empezar. Pero eso no cuesta nada.
Finalmente, lo mejor de todo es que el Sr. Donev me ha autorizado a usar no solamente su método sino el código que presenta en la página. En sus propias palabras:
The code is available with absolutely no restrictions: feel free to incorporate it into your software.
El código está disponible absolutamente sin restricciones. Siéntase libre de usarlo en su propio programa.
No hay comentarios:
Publicar un comentario