[ATARI] Librerias dinamicas en sistemas Atari

Antonio a-noguera at gmx.at
Mon Dec 30 10:56:03 CET 2002


> SE llama SIEMPRE a la libreria por su nombre de archivo. Hasta la fecha
> no he visto ningun sistema que lo haga de otro modo (*NIX, Windows, OS/2
> y Amiga).

Sí, aunque hay maneras y maneras... :)

Por ejemplo, si usas un programa bajo Windows que accede a
C:\WINNT\SYSTEM32\MSOWS409.DLL (es un decir) y más adelante te da por
emplear otro programa que accede a la misma librería, pero a una versión
posterior(MSOWS410.DLL) que presumiblemente contiene las mismas funciones y
alguna otra más (y que debiera ser compatible 100% hacia atrás con la
MSOWS409.DLL) se ve que la cosa no se solucionará simplemente cambiando una
librería por la otra nueva. ¿Por qué? Por qué el programa llama
EXPLICITAMENTE a una u otra. Esa es la cagada de poner los números de
versión como parte integrante del nombre de la DLL. Aunque bueno, ahora
parece que ya se van dando cuenta de esto.

En Amiga la manera de abrir librerías dinámicas se realiza mediante la
función OpenLibrary(D0,D1) que devuelve el puntero a donde sitúa la base de
la librería en memoria (como en todos los sitios) y le pasas dos parámetros
D0 que es el nombre de la librería ("intuition.library" por ejemplo) y D1,
que es el número de versión MINIMO de esa librería necesario para que
funcione la aplicación. Si la versión de la intuition.library fuera la 3, y
solicitamos la 5, OpenLibrary() devuelve un error. También puede obviarse el
parámetro D1 (=0), que hará que siempre abra la librería independientemente
de la versión que tenga...

> Lo que tendria que haber es un sistema que tu pidieses la libreria
> llamada A (y A no incluye version ni extension ni nada) y el sistema la
> busca en una base de datos de librerias instalads y te informa "su
> version es B" entonces si la version que necesitas es >B das error y si
> <=B la usas.
> Sencillo, no?

El problema es que lo de las "bases de datos" me recuerda irremediablemente
al sempiterno "registro de windows". Una mole monstruosa de datos (en gran
medida inútiles) que se cargan al inicio, que la mayoría no se usan para
nada y si quisieras añadir una librería al sistema deberías reiniciar o bien
ejecutar alguna orden capaz de actualizar la base de datos.


> > Supongo que Jesús quería dar un ejemplo de la flexibilidad de
> > las librerías
> > dinámicas, pero en la práctica vemos que no es tan sencillo,
> > independientemente del sistema. Como bien sabemos pueden
> > suceder dos cosas, o
> > las nuevas versiones sustituyen a las antiguas, y una parte
> > de aplicaciones
> > dejan de funcionar porque no encuentran la versión que
> > necesitan, o si quieres
> > evitar ésto, acabas teniendo un larga lista de librerías,
> > todas ellas del
> > mismo tipo pero de diferentes versiones.


Hombre esto puede suceder, pero lo lógico sería evitar que no sucediese. ¿De
que nos sirve tener una librería 0.9 que no es compatible al 100% con las
funciones de la 0.8? Sencillamente para eso, es más cabal usar librerías
estáticas...


Un saludo.

Antonio







More information about the Atari mailing list