Pregunta

Yo sé muy poco acerca de los DLL y de LIB aparte de que contienen código de vital importancia requerida para un programa se ejecute correctamente - bibliotecas. Pero ¿por qué los compiladores generan en absoluto? ¿No sería más fácil simplemente incluir todo el código en un solo ejecutable? Y ¿cuál es la diferencia entre

DLL y la liberación de la?
¿Fue útil?

Solución

Hay bibliotecas estáticas (LIB) y librerías dinámicas (DLL).

Las bibliotecas se utiliza porque puede que tenga código que desea utilizar en muchos programas. Por ejemplo, si se escribe una función que cuenta el número de caracteres de una cadena, esta función será útil en muchos programas. Una vez que llegue esa función funciona correctamente no quiere tener que volver a compilar el código cada vez que lo utilice, por lo que poner el código ejecutable para esa función en una biblioteca, y el enlazador puede extraer e insertar el código compilado en su programa . bibliotecas estáticas son a veces llamados 'archivos' por esta razón.

bibliotecas dinámicas toman un paso más allá. Parece un desperdicio tener múltiples copias de las funciones de biblioteca que ocupan espacio en cada uno de los programas. ¿Por qué no todos comparten una copia de la función? Esto es lo que las bibliotecas dinámicas son para. En lugar de construir el código de la biblioteca en su programa cuando se compila, se puede ejecutar mediante la asignación en su programa, ya que se carga en memoria. Múltiples programas que se ejecutan al mismo tiempo que utilizan las mismas funciones pueden todos comparten una copia, el ahorro de memoria. De hecho, se puede cargar librerías dinámicas sólo cuando sea necesario, dependiendo de la ruta a través de su código. Hay razón para tener las rutinas de impresora que ocupan la memoria si no está realizando la impresión. Por otro lado, esto significa que usted tiene que tener una copia de la biblioteca dinámica instalado en cada máquina el programa se ejecuta en. Esto crea su propio conjunto de problemas.

A modo de ejemplo, casi todos los programas escritos en 'C' tendrá funciones de una biblioteca llamada la 'biblioteca de ejecución C, aunque algunos programas necesitarán todas las funciones. El tiempo de ejecución C viene en dos versiones estáticas y dinámicas, para que pueda determinar qué versión de su programa utiliza dependiendo de las necesidades particulares.

Otros consejos

Otro aspecto es la seguridad (ofuscación). Una vez que una pieza de código se extrae de la aplicación principal y poner en un "separados" biblioteca de vínculos dinámicos, es más fácil de atacar, analizar (ingeniería inversa) el código, ya que se ha aislado. Cuando la misma pieza de código se mantiene en una biblioteca de LIB, es parte de la aplicación de destino compilado (ligado), y esto por lo tanto más difícil de aislar (diferenciar) que pieza de código del resto de los binarios de destino.

Una de las razones importantes para crear una DLL / LIB en lugar de compilar el código en un archivo ejecutable es la reutilización y reubicación. El promedio de Java o .NET aplicación (por ejemplo) más probable es que utilice varios tercera parte (o marco) bibliotecas. Es mucho más fácil y más rápido que acaba de compilar contra una biblioteca de pre-construidos, en lugar de tener que compilar todo el código de tercera parte en su aplicación. Compilar el código en las bibliotecas también fomenta las buenas prácticas de diseño, por ejemplo, el diseño de sus clases para ser utilizado en diferentes tipos de aplicaciones.

Una DLL es una biblioteca de funciones que son compartidos entre otros programas ejecutables. Basta con mirar en el directorio windows / system32 y encontrará docenas de ellos. Cuando el programa crea un archivo DLL que normalmente también crea un archivo lib para que la aplicación * .exe programa puede resolver los símbolos que se declaran en el archivo DLL.

A Lib es una biblioteca de funciones que se estáticamente vinculados a un programa - que no son compartidos por otros programas. Cada programa que vincula con un archivo * .lib tiene todo el código en ese archivo. Si tiene dos programas a.exe y b.exe que enlazan con C.lib entonces cada A y B será contener el código en C.lib.

¿Cómo se crean los archivos DLL y bibliotecas dependen del compilador que utilice. Cada compilador hace de manera diferente.

Otra diferencia radica en el rendimiento.

A medida que el DLL se carga en tiempo de ejecución por el .exe (s), el .exe (s) y el trabajo DLL con el concepto de memoria compartida y, por tanto, el rendimiento es bajo con respecto a la vinculación estática.

Por otro lado, un .lib es el código que está vinculado estáticamente en tiempo de compilación en cada proceso que solicita. Por lo tanto el .exe (s) tendrá memoria solo, aumentando así el rendimiento del proceso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top