Volver a la portada de Duiops
Volver al Web de Duiops
 
   
Menú
Secciones destacadas
Artículos y FAQs
Trucos de Windows
Versiones de Windows
y suites de software
Windows Vista
Windows Media Center
Windows XP
Windows 2000
Windows Millenium
Windows 98/98 SE
Windows 95 OSR-2
Internet Explorer
Office
Otros
Tutorial muy básico
   
Portada
Portada - Artículos y FAQs - Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 23)
 
Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 23)

 

Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... (Parte 23)
----------------------------------------------------

LIBRERIAS DINAMICAS EN TIEMPO DE EJECUCION: DLL's
--------------------------------------------------

** Mucho se comenta y se ha comentado sobre la DLLs. Pero n pocos sitios he visto una definicion que el usuario final sea capaz de entender. O bien es una definicion tecnica o bien se quedan tan panchos diciendo que es una libreria dinamica.

Y el caballero de a pié, el de la calle se queda con cara de besugo sin saber que le han respondido y la mayoria de la las veces sin atreverse a repetir la pregunta.

Vamos a ver si yo soy capaz de explicarlo de una manera sencillita.

* Lo logico, en cualquier sistema operativo, o cualquier programa, es que las cosas que haya que realizar muy repetitivamente, se haga desde un solo sitio. Con ello, tendremos tres ventajas:

1) Ahorro de esfuerzos. Si ya esta hecho, se utiliza sinó se hace (pensandolo bien) y se utiliza desde cualquier sitio.

2) Lo haga bien o lo haga mal, al menos está en un solo sitio. Facil de locaclizar para su arreglo si tenemos problemas.

3) Facil de mantener. Debido al punto 2) si necesitamos cambiar o ampliar su funcionalidad, está en un solo sitio y solo debemos tocar en ese sitio.

Podemos poner un ejemplo: muchos programas, por ejemplo, nos dán el espacio libre en disco. Entonces ¿cada uno de ellos lo calcula de una manera?. ¿no es mas facil ponerlo en un sitio comun y que todos lo calculen igual?.

Esto seria logicamente, una funcion de una libreria del sistema (de una DLL). El propio sistema o cualquier otro programa, llamandola, sabría el espacio libre.

** Como nota anecdotica, esta es la teoria. En la practica, ni el propio Windows 95/98 lo hace. Tenemos un ejemplo: al abrir My PC, nos dá siempre correctamente el espacio libre en disco y el espacio total. Pero pinchando en la papelera de reciclaje (en propiedades), nos damos cuenta que en discos mayores a 2 Gb, siempre nos indica que el disco es de 1,99 Gb. Por tanto ni el propio Microsoft hace caso a sus especificaciones (mejor dicho, a la logica de la programacion).

Bien, la teoria ya está. Es facil e intuitivo. Por ejemplo, imaginemos que somos programadores y que necesitamos unas funciones basicas de manejo de fechas en nuestra aplicacion. Deiferencia en dias entre dos fechas, sumar dias a una fecha, ver si la fecha es logica o nó,....etc. Y además somos conscientes que se va a utilizar mucho estas funciones, tanto en nuestra aplicacion, como en otrs que vayamos a desarrollar.

Lo logico en este caso, es preparar bien esas funciones, y generar con ellas una libreria dinamica (DLL).

Decimos "dinamica", porquw es mas logico que el otro concepto: "estatica". Una libreria estatica, tambien puede generarse, pero obliga a que los programas estén "linkados" (montados) con esa libreria en sus tripas. Por tanto si son "estaticas" tenemos 2 desventajas:

1) Los programas ejecutables, serán mas "gordos". Todos llevaran incorporados dentro esas funciones.

2) Si modificamos algo de esas librerias, deberemos cogernos toda la aplicacion y volverla a generar (volverla a "linkar") y distribuir toda la aplicacion de nuevo.

En cambio, si las funciones las tenemos en una DLL, simplemente modificando dicha DLL no tendremos que hacer nada mas con nuestra aplicacion.

** Pero no todo van a ser ventajas. Por desgracia, vemnos que en el mundo real muchos problemas nos provienen de que "alguien" nos machaca una versión de una DLL y nos deja de funcionar cualquier otro producto (incluso el mismo windows).

Pues es verdad. Voy a intentar explicarlo. Imaginemos que una DLL (antigua) no sabe calcular bien alguna cosa (por ejemplo el tamaño en disco, debido a que es tan antigua que no "conocia" la FAT 32). Imaginemos tambien, que esa DLL se arregla y se distribuye con una nueva versión del sistema operativo. Y vamos a imaginar tambien que un programa "viejo" de alguna aplicacion de terceros, decidió en su dia distribuir esa DLL por si acaso alguien la tenia dañada. Y además su proceso instalador es "malo" y no verifica que exista una nueva version, sino que copia directamente la DLL.

Pues el resultado está claro: nuestro Windows dejará de funcionar correctamente. Fijaros que es un caso, en que por sustituir una DLL de una aplicacion, el sistema operativo se resiente.

** Este caso que parece anecdotico, no lo es tanto. Pensemos que los productos que ahora mismo vienen con el sistema operativo, anteriormente eran productos opcionales y de "libre" distribucion. Por ejemplo, el "motor" de access para que nos funcionen las aplicaciones realizadas en Access, nunca se habia distribuido con el sistema, pero se habia dado siempre licencia a los desarrolladores de aplicacion para distribuirlo ellos.

Actualmente parte del motor de access se distribuye como DLLs comunes en Windows 98. Si algun programador de Access tiene un sistema de distribucion propio (no utiliza el de windows), y "viejo", nos machacará ahora parte del sistema.

Lo mismo podemos decir de otras capas de windows: ODBC, OLE, ASPI, TWAIN, etc, etc,....

** Es por ello, por lo que en capitulos anteriores hemos insistido en la necesidad de utilizar el SFC. Y debemos dar a esta pequeña herramienta, mas importancia de lo que parece: nos salvará la vida mas de una vez. Y además nos sorprenderemos cuando despues de instalar unas cuantas cosas, ejecutemos el SFC, y veamos que cualquier parecido de nuestro Windows con el que instalamos inicialmente es mera coincidencia. Incluso nos sorprenderemos que funcione y sea capaz de arrancar.

*** Retomando el tema anterior, hemos visto que as DLLs son necesarias y además nos pueden dar muchas ventajas (y algun inconveniente, pero no en si mismas, sino en una mala distribucion).

Bien, las DLLs actuales traen decenas e incluso cientos de funciones, que utilizan tanto el sistema operativo como cualquier aplicacion Windows.

Hay un caso que nos sucede a veces, despues de alguna instalación en el cual de pronto recibimos el mensaje "Invalid DYNALINK" o "Símbolo DYNA no definido".

Esto nos indica un "machaque" de DLL por una antigua. Realmente el mensaje quiere decir que se está intentando utilizar una funcion de una DLL, y la DLL sí que existe, pero dentro de ella, no existe esa funcion.

Es normal que al ir aumentando el numero de versión de la DLLs, por razones de eficiencia, las nuevas funciones similares o que utilicen mucho las de una DLL, se "introduzcan" en esa misma DLL. Por eso "aumenta" su numero de versión.A veces porque se corrigen problemas y a veces (las más), porque se añaden funcionalidades -funciones nuevas-)

Si un programa nos sustituye una DLL anterior, probablemente esta no tenga alguna de las funciones que necesite una aplicacion. En este caso, al ir a utilizarlas, nos mostrará el mensaje de error que he citado anteriormente.

OTROS TERMINOS COMUNES EN WINDOWS. DRIVERS Y VXD
------------------------------------------------

**** Bueno, y este será el siguiente capitulo......


Volver a Artículos y FAQs

 

     
 

Volver arriba Volver arriba

© 1997-2009 Duiops (http://www.duiops.net)
Prohibida la reproducción parcial o total de los textos o las imágenes

Para comentarios, usa las direcciones e-mail de contacto.