2009-01-27 9 views
76

Esta puede ser una pregunta muy buena, pero en el mundo de hoy de desarrollo de aplicaciones web, muchos programadores no necesitan lidiar con la dll, y por lo tanto no se molestan en conocer su propósito.¿Qué es un dll?

¿Qué es un dll?

  1. ¿Para qué se utiliza?
  2. ¿Cómo funciona?
  3. ¿Cómo se puede crear uno?
  4. ¿En qué situaciones está creando uno apropiado?

Me han dicho que los dll se usan para almacenar bibliotecas de funciones, pero más allá de eso, no sé mucho. Espero que alguien aquí me pueda iluminar para finalmente dejar de preguntarme qué están haciendo todos esos archivos .dll en mi directorio de Windows.

+0

wiki de la comunidad se debe utilizar para los casos en que no hay respuestas reales a su pregunta. Esta es una pregunta válida y al seleccionar el modo wiki de la comunidad, evitas que tú y los contestadores obtengan reputación en esta pregunta. –

+0

esta pregunta tiene el potencial de convertirse en una muy popular –

+0

¿Crees? Quizás para vistas pero no para votos ... De todos modos ya ha sido respondida 4 veces. –

Respuesta

48

Una DLL es una biblioteca de enlaces dinámicos. Es una colección de código y/o datos, que pueden ser utilizados por varias aplicaciones (u otras bibliotecas/módulos).

Por ejemplo, los métodos comunes para procesar archivos, trabajar con componentes de la GUI, etc. están disponibles en las bibliotecas, por lo que varias aplicaciones pueden usar la misma funcionalidad. Esto no solo reduce la necesidad de construir el mismo material varias veces, sino que también asegura que, p. los diálogos comunes son los mismos entre las aplicaciones.

Las bibliotecas se pueden cargar en tiempo de ejecución y, por lo tanto, se pueden compartir entre diferentes aplicaciones simultáneas. Esto se llama enlace dinámico.

En algunos casos, la biblioteca se puede incluir dentro de la aplicación. Esto se conoce como enlace estático. Los enlaces estáticos facilitan la implementación a costa de la flexibilidad, ya que cada aplicación cargará la misma copia de la DLL.

Sin embargo, la vinculación estática no siempre es una opción. P.ej. no puede vincular estáticamente una aplicación .NET. El usuario debe tener las bibliotecas .NET para ejecutar una aplicación .NET y las bibliotecas (o los ensamblados como se llaman en .NET) se cargan en el tiempo de ejecución.

Las DLL se crean con las mismas herramientas que se utilizan para crear aplicaciones. Los detalles específicos dependen en gran medida de las herramientas utilizadas.

+0

Gracias por la respuesta, una cosa que me pregunto es ¿cómo saben las aplicaciones qué funciones están disponibles en el dll? El dll en sí es todo código de máquina ¿verdad? Entonces, ¿cómo se exponen las firmas de funciones públicas en el dll? – Daniel

+0

No conozco la mayoría de los idiomas, pero el autocompletar de Visual Studio le mostrará todas las funciones disponibles. – Grant

+1

Pero, ¿cómo se autocompleta averiguar cuáles son las funciones disponibles si el dll es solo código de máquina? – Daniel

-1

The Wikipedia page on DLLs tiene prácticamente toda la información que desea.

biblioteca de vínculos dinámicos (también escrito sin el guión), o DLL, es la aplicación del concepto de biblioteca compartida en el sistema operativo OS/2 Microsoft Windows y de Microsoft. Estas bibliotecas normalmente tienen el la extensión de archivo DLL, OCX (para bibliotecas que contienen controles ActiveX ) o DRV (para controladores de sistema heredados). Los formatos de archivo para DLL son los mismos que para los archivos EXE de Windows, es decir, Portable Ejecutable (PE) para Windows de 32 bits y 64 bits, y Nuevo ejecutable (NE) para Windows de 16 bits. Al igual que con EXEs, las DLL pueden contener código, datos y recursos , en cualquier combinación. En el sentido más amplio del término, cualquier archivo de datos con el mismo formato de archivo se puede llamar DLL de recursos.

+14

Sé cómo usar wikipedia, pero prefiero preguntar aquí que investigar en wikipedia es lo mismo que preferir preguntarle a un profesor en lugar de buscarlo en el libro. A veces, el profesor puede proporcionarle más información, ¿verdad? – Daniel

+2

-1. Nada en este párrafo proporciona una explicación útil para OP – KMC

5

Biblioteca enlazada dinámicamente.

Para dar un ejemplo, si usted tiene algún otro DLL de carga en que la aplicación puede utilizar trozos de la programación de la misma.

Se puede cargar un archivo DLL que genera números aleatorios que siempre comienzan con "5" o algo así.

En su programa puede llamar a CrazyDLL.GenerateRandomNumbersSorta() y devolverá el número.

Para un ejemplo del mundo real, tengo DLL que combina 4 cuadros de texto (los usaría para escribir direcciones IP) y acepta automáticamente números menores que 256, y maneja presionar la tecla de retroceso para saltar a un cuadro de texto anterior .

He creado una DLL con ese código, y ahora todo lo que tengo que hacer es arrastrar y soltar más de esas colecciones de texto de la dirección IP sin tener que duplicar todo ese código una y otra vez.

La misma DLL también tiene función de conversión de direcciones IP a cadenas hexadecimales, y otra código útil.

+0

Lo he arreglado ... –

1

De MSDN Library:

Una biblioteca de vínculos dinámicos (DLL) es un módulo que contiene funciones y datos que pueden ser utilizados por otro módulo (aplicación o DLL).

1

DLL = Dinámico Cargar Biblioteca de vínculos. Como te han dicho, básicamente es una colección de funciones, clases de C++ y/o variables globales. Puede cargar la DLL estáticamente (es decir, el sistema operativo la carga automáticamente cuando se inicia su programa) o dinámicamente (su programa la carga explícitamente), en cuyo punto las funciones y cosas dentro de la DLL están disponibles para su programa.

Crear uno es similar a crear un EXE, excepto que no necesita ser una función main(). Hay directivas de vinculador para decirle al vinculador que cree una DLL en lugar de un EXE.

La razón principal por la que desea hacer esto es encapsular un código en un lugar y usarlo desde múltiples ejecutables, en lugar de vincular el código a cada uno.

Una razón un tanto histórica es que su exe puede ser más pequeño ya que parte del código se encuentra físicamente en un archivo diferente. Esto significa que la cantidad de espacio ocupada en memoria por su exe puede ser menor. En los sistemas modernos, este es un problema menor de lo que solía ser, aunque todavía podría ser un problema en Windows Mobile.

25

DLL = Dynamic Link Library

El nombre es en realidad bastante descriptivo de lo que logran.

Biblioteca

le permite aislar el código para un dominio problema específico en un solo lugar. Luego, comparte esto entre múltiples aplicaciones. La biblioteca se puede intercambiar por otra en cualquier momento para corregir errores o agregar funcionalidad.

Enlace

Puede "Enlace" de la biblioteca para una aplicación para que la lógica de la biblioteca no se compila directamente en la aplicación.

dinámico

La biblioteca se puede cargar a la carta. En lugar de cargar un enorme EXE único en la memoria, el sistema operativo puede cargar solo las porciones necesarias. Además, si se comparte un archivo DLL entre las aplicaciones, el sistema operativo puede optimizar la forma en que se carga la biblioteca y compartirla entre las aplicaciones.

+1

+1 para mencionar la carga de memoria dinámica – KMC

7

DLL (dynamic link library) Los archivos se pueden describir como pequeños "subprogramas" que están destinados a ayudar a que un programa más grande funcione bien. Proporcionan un medio para vincular varios recursos de hardware y software (en varios puntos de sus sesiones de tiempo de ejecución) con el programa ejecutable principal en el que se basan, sobre la base de que "surge la necesidad". Esto elimina la necesidad de cargar todo lo que tenga que ver con el programa ejecutable principal en la RAM de la computadora (memoria de acceso aleatorio) cuando se ejecuta por primera vez el programa.

Los recursos de software llevados por las DLL incluyen código para las diversas funciones del programa que no son realmente necesarias para mantener el programa en ejecución: es decir, funciones que solo necesitan llamarse en determinados momentos durante una sesión informática determinada y pueden en realidad ni siquiera necesita ser llamado en absoluto. Cargar esas funciones (y puede haber un número considerable de ellas para un programa determinado) en la RAM de la computadora cuando se ejecuta por primera vez el programa y luego mantenerlas allí durante toda la sesión sería un desperdicio de espacio RAM, que se considera como un premio.

Un gran avance:

El desarrollo de DLL fue un avance importante en la informática, porque antes de que estuvieran disponibles, todo lo relacionado con un programa (incluyendo las funciones que eran rara vez o nunca utilizado) tenía que ser cargado en la RAM cuando el programa se cargó por primera vez. Eso llevó a una informática extremadamente ineficiente, con velocidades más lentas exhibidas por varios programas. También fue extremadamente difícil realizar varias tareas al ejecutar incluso un par de programas simples, debido a la tensión concomitante en la memoria RAM.

Consideraciones:

DLL son por lo general específica de la versión. Aquellos que funcionan bien para, digamos, la versión 1 de un programa (o un lenguaje de programación, como puede ser el caso) podrían no funcionar bien con la versión 2. La regla general es que los archivos DLL en la versión anterior tienden a ser incapaces de funcionar bien con la versión más nueva, pero los de la versión más nueva generalmente pueden funcionar bastante bien con la versión anterior del programa o lenguaje de programación.

0

biblioteca de vínculos dinámicos (también escrito sin guión), o DLL, es la aplicación del concepto de biblioteca compartida en el OS/2 sistemas operativos Microsoft Windows y de Microsoft. Estas bibliotecas generalmente tienen la extensión de archivo DLL, OCX (para bibliotecas que contienen controles ActiveX) o DRV (para controladores de sistema heredados). Los formatos de archivo para DLL son los mismos que para los archivos EXE de Windows, es decir, Portable Executable (PE) para Windows de 32 y 64 bits, y New Executable (NE) para Windows de 16 bits. Al igual que con EXEs, las DLL pueden contener código, datos y recursos, en cualquier combinación.

Cuestiones relacionadas