Pregunta Diferencia entre .dll y .exe?


Quiero saber la diferencia exacta entre el archivo dll y exe.


74
2017-07-31 06:03


origen


Respuestas:


EXE:

  1. Es un archivo ejecutable
  2. Al cargar un archivo ejecutable, no se llama a exportar, sino solo al punto de entrada del módulo.
  3. Cuando un sistema lanza un nuevo ejecutable, se crea un nuevo proceso
  4. El hilo de entrada se llama en el contexto del hilo principal de ese proceso.

DLL:

  1. Es una biblioteca de enlace dinámico
  2. Hay múltiples símbolos exportados.
  3. El sistema carga una DLL en el contexto de un proceso existente.

Para más detalles: http://www.c-sharpcorner.com/Interviews/Answer/Answers.aspxQuestionId=1431&MajorCategoryId=1&MinorCategoryId=1 http://wiki.answers.com/Q/What_is_the_difference_between_an_EXE_and_a_DLL

Referencia: http://www.dotnetspider.com/forum/34260-What-difference-between-dll-exe.aspx


60
2017-07-31 06:09



No sé por qué todos responden esta pregunta en el contexto de .NET. La pregunta era general y no mencionaba a .NET en ninguna parte.

Bueno, las principales diferencias son:

exe

  1. Un exe siempre se ejecuta en su propio espacio de direcciones, es decir, es un proceso separado.
  2. El propósito de un EXE es lanzar una aplicación propia por separado.

DLL

  1. A dll siempre necesita un host exe para ejecutar. es decir, nunca se puede ejecutar en su propio espacio de direcciones.
  2. El propósito de una DLL es tener una colección de métodos / clases que puedan ser reutilizados desde alguna otra aplicación.
  3. DLL es la implementación de Microsoft de una biblioteca compartida.

El formato de archivo de DLL y exe es esencialmente el mismo. Windows reconoce la diferencia entre DLL y EXE a través del encabezado PE en el archivo. Para detalles del encabezado PE, Puedes echar un vistazo a este artículo en MSDN


106
2017-07-31 06:41



La diferencia es que un EXE tiene un punto de entrada, un método "principal" que se ejecutará en la ejecución.

El código dentro de una DLL necesita ser llamado desde otra aplicación.


24
2017-09-29 15:08



Hay algunas diferencias más con respecto a la estructura que podría mencionar.

  1. Tanto DLL como EXE comparten la misma estructura de archivos: Portable Executable o PE. Para diferenciar entre los dos, uno puede mirar en el Characteristics miembro de IMAGE_FILE_HEADER dentro IMAGE_NT_HEADERS. Para una DLL, tiene el IMAGE_FILE_DLL (0x2000) bandera activada. Para un EXE es el IMAGE_FILE_EXECUTABLE_IMAGE (0x2) bandera.
  2. Los archivos PE constan de algunos encabezados y varias secciones. Por lo general, hay una sección para el código, una sección para los datos, una sección que enumera las funciones importadas y una sección de recursos. Algunas secciones pueden contener más de una cosa. El encabezado también describe una lista de directorios de datos que se encuentran en las secciones. Esos directorios de datos son lo que permite a Windows encontrar lo que necesita en el PE. Pero un tipo de directorio de datos que un EXE nunca tendrá (a menos que esté construyendo un EXE de frankenstein) es el directorio de exportación. Aquí es donde los archivos DLL tienen una lista de funciones que exportan y pueden ser utilizados por otros archivos EXE o DLL. Por otro lado, cada archivo DLL y EXE tiene un directorio de importación donde enumera las funciones y los archivos DLL que requiere para ejecutar.
  3. También en los encabezados PE (IMAGE_OPTIONAL_HEADER) es el ImageBase miembro. Especifica la dirección virtual en la que el PE supone que se cargará. Si se carga en otra dirección, algunos punteros podrían señalar la memoria incorrecta. Como los archivos EXE se encuentran entre los primeros en ser cargados en su nuevo espacio de direcciones, el cargador de Windows puede asegurar una dirección de carga constante y generalmente es 0x00400000. Ese lujo no existe para una DLL. Dos archivos DLL cargados en el mismo proceso pueden solicitar la misma dirección. Esta es la razón por la cual un archivo DLL tiene otro directorio de datos llamado Base Reubicación Directorio que generalmente reside en su propia sección - .reloc. Este directorio contiene una lista de lugares en el archivo DLL que necesitan ser actualizados / parcheados para que apunten a la memoria correcta. La mayoría de los archivos EXE no tienen este directorio, pero algunos compiladores antiguos sí los generan.

Puedes leer más sobre este tema @ MSDN.


22
2017-11-24 11:21



Esta respuesta fue un poco más detallada de lo que pensaba pero la leí.

DLL:
En la mayoría de los casos, un archivo DLL es un biblioteca. Hay un par de tipos de bibliotecas, dinámicas y estáticas: lee sobre la diferencia. DLL significa enlace dinámico biblioteca que nos dice que es un parte del programa pero no toda la cosa. Está hecho de componentes de software reutilizables (biblioteca) que podría usar para más de un solo programa. Tenga en cuenta que siempre es posible usar el código fuente de la biblioteca en muchas aplicaciones usando copiar y pegar, pero la idea de una biblioteca DLL / estática es que pueda actualizar el código de una biblioteca y al mismo tiempo actualizar todas las aplicaciones usando sin compilar

Por ejemplo:
Imagina que estás creando un Componente GUI de Windows como un Botón. En la mayoría de los casos, querrás volver a utilizar el código que has escrito porque es complejo pero común componente: desea utilizar muchas aplicaciones pero no desea darles el código fuente. No puede copiar y pegar el código del botón en cada programa, por lo que decide que desea crear un Biblioteca DL (DLL).

Esta "botón" la biblioteca es requerida por executables para ejecutar, y sin él no se ejecutarán porque no saben cómo crear el botón, solo cómo hablar con él.

Del mismo modo, un archivo DLL no se puede ejecutar, ejecutar, porque es solo una parte del programa, pero no tiene la información necesaria para crear un archivo. "proceso".

EXE:
Un ejecutable es el programa. Sabe cómo crear un proceso y cómo hablar con la DLL. Eso necesariamente el DLL para crear un botón, y sin él la aplicación no se ejecuta - ERROR.

espero que esto ayude....


16
2017-07-31 07:04



Ambos DLL y EXE son Formatos ejecutables portátiles (PE)

UN Biblioteca de enlace dinámico (DLL) es una biblioteca y, por lo tanto, no se puede ejecutar directamente. Si intenta ejecutarlo, obtendrá un error acerca de un punto de entrada faltante. Necesita un punto de entrada (función principal) para ser ejecutado, ese punto de entrada puede ser cualquier aplicación o exe. La vinculación de DLL ocurre en tiempo de ejecución. Es por eso que se llama biblioteca "Dynamic Link".

Un Ejecutable (EXE) es un programa que se puede ejecutar. Tiene su propio punto de entrada. Una bandera dentro del encabezado PE indica qué tipo de archivo es (irrelevante de la extensión del archivo). El encabezado PE tiene un campo donde reside el punto de entrada del programa. En DLL no se usa (o al menos no como un punto de entrada).

Hay muchos software disponible para verificar la información del encabezado. La única diferencia que hace que ambos funcionen de manera diferente es el bit en el encabezado como se muestra en el diagrama a continuación.

header

El archivo EXE tiene solo una entrada principal significa que es una aplicación aislada, cuando un sistema ejecuta exe, se crea un nuevo proceso, mientras que las DLL tienen muchos puntos de entrada, así que cuando la aplicación no se inicia ningún proceso nuevo, la DLL puede reutilizarse y versionarse. DLL reduce el espacio de almacenamiento ya que diferentes programas pueden usar el mismo dll.


11
2018-01-10 11:24



Dos cosas: la extensión y el indicador de encabezado almacenados en el archivo.

Ambos archivos son archivos PE. Ambos contienen exactamente el mismo diseño. Una DLL es una biblioteca y, por lo tanto, no se puede ejecutar. Si intenta ejecutarlo, obtendrá un error sobre el punto de entrada faltante. Un EXE es un programa que se puede ejecutar. Tiene un punto de entrada. Una bandera dentro del encabezado PE indica qué tipo de archivo es (irrelevante de la extensión del archivo). El encabezado PE tiene un campo donde reside el punto de entrada del programa. En DLL no se usa (o al menos no como un punto de entrada).

Una pequeña diferencia es que en la mayoría de los casos DLL tener una sección de exportación donde se exportan los símbolos. Los EXE nunca deben tener una sección de exportación ya que no son bibliotecas, pero nada impide que eso suceda. El cargador Win32 no le importa de ninguna manera.

Aparte de eso, son idénticos. Entonces, en resumen, los EXE son programas ejecutables mientras que los DLL son bibliotecas cargadas en un proceso y contienen algún tipo de funcionalidad útil como seguridad, acceso a la base de datos o algo así.


3
2017-08-25 02:55



Dll v / s Exe

1) El archivo DLL es una biblioteca de enlaces dinámicos que se puede usar en archivos exe y otros archivos dll.
  El archivo EXE es un archivo ejecutable que se ejecuta en un archivo separado proceso que es administrado por el sistema operativo.

2) Las DLL no son ejecutables directamente. Son archivos separados que contienen funciones a las que los programas y otras DLL pueden llamar para realizar cálculos y funciones.
 Un EXE es un programa que se puede ejecutar. Ejemplo: programa de Windows

3) Reusabilidad
DLL: Se pueden reutilizar para alguna otra aplicación. Siempre que el codificador conozca los nombres y parámetros de las funciones y procedimientos en el archivo DLL.
EXE: solo para un propósito específico.

4) Una DLL compartiría el mismo proceso y espacio de memoria de la aplicación de llamada mientras
 EXE crea su proceso separado y espacio de memoria.

5) Usos
DLL: Desea que muchas aplicaciones lo utilicen, pero no desea darles el código fuente. No puede copiar y pegar el código del botón en cada programa, por lo que decide que desea crear una biblioteca DL (DLL )

EXE: cuando trabajamos con plantillas de proyecto como aplicaciones de Windows Forms, aplicaciones de consola, aplicaciones WPF y servicios de Windows, generan un ensamblado de exe cuando se compilan.

6) Similitudes:
Tanto DLL como EXE son archivos binarios que tienen una estructura anidada compleja definida por el formato Portable Executable y no están destinados a ser editados por los usuarios.


3
2017-09-11 12:05