Pregunta

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

¿Fue útil?

Solución

EXE:

  1. Es un archivo ejecutable
  2. Al cargar un ejecutable, no se llama a la exportación, 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 enlaces dinámicos
  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

Otros consejos

No sé por qué todos están respondiendo esta pregunta en el contexto de .NET. La pregunta era general y no mencionaba .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. Un dll siempre necesita un host exe para ejecutarse. es decir, nunca puede ejecutarse en su propio espacio de direcciones.
  2. El objetivo de una DLL es tener una colección de métodos / clases que se puedan reutilizar 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 obtener más información sobre el encabezado PE, puede consultar este artículo en MSDN

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

El código dentro de un archivo DLL debe llamarse desde otra aplicación.

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

  1. Tanto DLL como EXE comparten la misma estructura de archivo: ejecutable portátil o PE. Para diferenciar entre los dos, se puede buscar en el miembro Características de IMAGE_FILE_HEADER dentro de IMAGE_NT_HEADERS . Para una DLL, tiene activada la bandera IMAGE_FILE_DLL (0x2000). Para un EXE, es el indicador IMAGE_FILE_EXECUTABLE_IMAGE (0x2).
  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 para los 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 los que permiten 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é creando 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 DLL y EXE tiene un directorio de importación donde enumera las funciones y los archivos DLL que necesita para ejecutarse.
  3. También en los encabezados PE ( IMAGE_OPTIONAL_HEADER ) está el miembro ImageBase . 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 apuntar a la memoria incorrecta. Como los archivos EXE se encuentran entre los primeros que se cargan en su nuevo espacio de direcciones, el cargador de Windows puede garantizar una dirección de carga constante y que generalmente es 0x00400000. Ese lujo no existe para una DLL. Dos archivos DLL cargados en el mismo proceso pueden solicitar la misma dirección. Es por eso que una DLL tiene otro directorio de datos llamado Directorio de reubicación base que generalmente reside en su propia sección: .reloc . Este directorio contiene una lista de lugares en la DLL que necesitan ser modificados / parcheados para que apunten a la memoria correcta. La mayoría de los archivos EXE no tienen este directorio, pero algunos compiladores antiguos los generan.

Puede leer más sobre este tema @ MSDN .

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 una biblioteca . Hay un par de tipos de bibliotecas, dinámicas y estáticas: lea sobre la diferencia . DLL significa enlace dinámico biblioteca que nos dice que es una parte del programa pero no todo. Está hecho de componentes de software reutilizables ( biblioteca ) que puede 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 estática / DLL es que puede actualizar el código de una biblioteca y al mismo tiempo actualizar todas las aplicaciones usando - sin compilar

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

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

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

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

espero que esto ayude ...

Tanto DLL como EXE son Formatos ejecutables portátiles (PE)

A Biblioteca de enlaces dinámicos (DLL) es una biblioteca y, por lo tanto, no se puede ejecutar directamente. Si intenta ejecutarlo, recibirá un error sobre un punto de entrada faltante. Necesita un punto de entrada (función principal) para ejecutarse, ese punto de entrada puede ser cualquier aplicación o exe. El enlace DLL se produce en tiempo de ejecución. Es por eso que se llama " Dynamic Link " biblioteca.

Un Ejecutable (EXE) es un programa que puede ser ejecutado. 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 para el programa. En las DLL no se usa (o al menos no como punto de entrada).

Hay muchos software disponibles 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 siguiente diagrama.

  

header

El archivo

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

Dll v / s Exe

1) El archivo DLL es una biblioteca de enlace dinámico 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 gestionado por el sistema operativo.

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

3) Reutilización
DLL: se pueden reutilizar para alguna otra aplicación. Mientras el codificador conozca los nombres y parámetros de las funciones y procedimientos en el archivo DLL.
EXE: solo para fines específicos.

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

5) Usos
DLL: desea que muchas aplicaciones lo usen, 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 crear una biblioteca DL (DLL ).

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

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

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 un 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 para la extensión del archivo). El encabezado PE tiene un campo donde reside el punto de entrada para el programa. En las DLL no se usa (o al menos no como punto de entrada).

Una diferencia menor es que en la mayoría de los casos DLLs tienen una sección de exportación donde se exportan símbolos. Los EXE nunca deberían tener una sección de exportación, ya que no son bibliotecas, pero nada impide que eso suceda. Al cargador Win32 no le importa de ninguna manera.

Aparte de eso, son idénticos. En resumen, los EXE son programas ejecutables, mientras que las 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í.

Un EXE es visible para el sistema como un ejecutable Win32 normal. Su entrada el punto se refiere a un pequeño cargador que inicializa el tiempo de ejecución de .NET y le dice para cargar y ejecutar el ensamblado contenido en el EXE. Una DLL es visible para el sistema como una DLL Win32 pero muy probablemente sin ninguna puntos de entrada. El tiempo de ejecución .NET almacena información sobre el contenido ensamblaje en su propio encabezado.

  

dll es una colección de reutilizables   funciones donde como un .exe es un   ejecutable que puede llamar a estos   funciones

El .exe es el programa. El .dll es una biblioteca a la que puede llamar un .exe (u otro .dll).

Lo que dice sakthivignesh puede ser cierto en que un .exe puede usar otro como si fuera una biblioteca, y esto se hace (por ejemplo) con algunos componentes COM. En este caso, el "esclavo" .exe es un programa separado (estrictamente hablando, un proceso separado, tal vez ejecutándose en una máquina separada), pero que acepta y maneja solicitudes de otros programas / componentes / lo que sea.

Sin embargo, si solo elige un .exe y .dll aleatorio de una carpeta en sus Archivos de programa, lo más probable es que COM no sea relevante: son solo un programa y sus bibliotecas vinculadas dinámicamente.

Usando las API de Win32, un programa puede cargar y usar una DLL usando las funciones de la API LoadLibrary y GetProcAddress, IIRC. Hubo funciones similares en Win16.

COM es en muchos sentidos una evolución de la idea DLL, originalmente concebida como la base de OLE2, mientras que .NET es el descendiente de COM. Las DLL han existido desde Windows 1, IIRC. Originalmente eran una forma de compartir código binario (particularmente API del sistema) entre múltiples programas en ejecución para minimizar el uso de memoria.

& # 9679; .exe y dll son la versión compilada del código c # que también se llama como asambleas.

& # 9679; .exe es un archivo ejecutable independiente, lo que significa que puede ejecutarse directamente.

& # 9679; .dll es un componente reutilizable que no se puede ejecutar directamente y requiere otros programas para ejecutarlo.

Un exe es un programa ejecutable mientras que un DLL es un archivo que los programas pueden cargar y ejecutar dinámicamente.

Diferencia en DLL y EXE:

1) DLL es un componente en proceso que significa ejecutarse en el mismo espacio de memoria que el proceso del cliente. EXE es un componente de proceso externo, lo que significa que se ejecuta en su propio espacio de memoria separado.

2) La DLL contiene funciones y procedimientos que otros programas pueden usar (promueve la facilidad de uso) mientras que EXE no se puede compartir con otros programas.

3) DLL no puede ejecutarse directamente ya que están diseñados para ser cargados y ejecutados por otros programas. EXE es un programa que se ejecuta directamente.

La principal diferencia exacta entre DLL y EXE es que DLL no tiene un punto de entrada y EXE sí. Si está familiarizado con c ++, puede ver que el EXE de compilación tiene la función de entrada main () y la DLL no :)

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