[C con Clase] Asunto DLL

Salvador Pozo salvador en conclase.net
Jue Dic 21 10:32:19 CET 2006


El pasado 2006-12-21 05:30:27, Abel escribió:
 
A> Hola a todos,

Hola:

A>   por el momento me encuentro trabajando con LabWindows y tuve tambien el mismo problema que alguien de la lista, resulta que mi ejecutable no funciona en otra computadora donde no esté instalado un DLL, osea busca ese DLL y no lo encuentra. Mi pregunta general es: 
A>   - Qué es exáctamente un DLL?

Una DLL es un fichero que contiene el código ejecutable de funciones o clases, (aunque también puede contener otras cosas, como recursos: iconos, mapas de bits, etc), formando una librería (o biblioteca).

Se suelen usar dos tipos de librerías, atendiendo al modo en que se integran con los programas que las usan:

- Librerías de enlace estático, o librerías estáticas. En este caso, las librerías existen como ficheros en disco, pero el código de las funciones se extrae en la fase de enlazado del programa, y se incluye junto con su ejecutable.

- Librerías de enlace dinámico, (Dynamic Link Library o DLL). En este caso, las librerías tienen otro formato (en Windows son ficheros dll), y el enlazado no se hace en la fase de enlazado estático. Cuando se crea el programa ejecutable no se incluye el código de las funciones de librería junto con el ejecutable, sino que es durante la ejecución cuando el programa busca el fichero de librería, y ejecuta la función directamente desde ese fichero.

El segundo método es más complicado, aunque resulta transparente para el programador (según el método utilizado) o para el usuario.

Cada sistema tiene sus ventajas en inconvenientes.

Por una parte, cuando se usan librerías estáticas, los programas ejecutables son independientes. No se necesita instalar librerías externas, ni verificar su existencia. Por contra, los ficheros ejecutables son más pesados.

El uso de librerías dinámicas disminuye el tamaño de los ficheros ejecutables, y cuando se trata de librerías de uso general, también disminuyen el uso de disco, ya que varias aplicaciones pueden compartir las mismas librerías. Pero las instalaciones se complican, ya que junto con el ejecutable, es necesario instalar las librerías dinámicas que use.

Cuando se trata de librerías dinámicas propias de compiladores, como es el caso que mencionas de LabWindows, o el que menciona Reinel en su mensaje con VC++ o compiladores de Borland, el IDE suele disponer de opciones para hacer un enlace estático en lugar de uno dinámico, y de ese modo, eliminar la necesidad de usar ficheros extra.

Hasta pronto.


-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase