Question

Je veux connaître la différence exacte entre le fichier dll et le fichier exe.

Était-ce utile?

La solution

EXE:

  1. C'est un fichier exécutable
  2. Lors du chargement d'un exécutable, aucune exportation n'est appelée, mais uniquement le point d'entrée du module.
  3. Lorsqu'un système lance un nouvel exécutable, un nouveau processus est créé
  4. Le fil d'entrée est appelé dans le contexte du fil principal de ce processus.

DLL:

  1. C’est une bibliothèque de liens dynamiques
  2. Il existe plusieurs symboles exportés.
  3. Le système charge une DLL dans le contexte d'un processus existant.

Pour plus de détails: http: //. c-sharpcorner.com/Interviews/Answer/Answers.aspxQuestionId=1431&MajorCategoryId=1&MinorCategoryId=1

Référence: http: //www.dotnetspider. com / forum / 34260-Quelle-différence-entre-dll-exe.aspx

Autres conseils

Je ne sais pas pourquoi tout le monde répond à cette question dans le contexte de .NET. La question était générale et ne mentionnait nulle part .NET.

Les principales différences sont les suivantes:

EXE

  1. Un exe est toujours exécuté dans son propre espace d'adressage, c’est-à-dire qu’il s’agit d’un processus séparé.
  2. Le but d'un EXE est de lancer sa propre application.

DLL

  1. Une dll a toujours besoin d'un exe hôte pour s'exécuter. c'est-à-dire qu'il ne peut jamais fonctionner dans son propre espace d'adressage.
  2. Le but d'une DLL est de disposer d'un ensemble de méthodes / classes pouvant être réutilisées à partir d'une autre application.
  3. DLL est l'implémentation par Microsoft d'une bibliothèque partagée.

Le format de fichier de DLL et EXE est essentiellement le même. Windows reconnaît la différence entre DLL et EXE via l'en-tête PE dans le fichier. Pour plus d'informations sur l'en-tête PE, Vous pouvez consulter cet article sur MSDN

La différence est qu’un fichier EXE a un point d’entrée, un "principal". méthode qui s'exécutera à l'exécution.

Le code d'une DLL doit être appelé à partir d'une autre application.

Il existe quelques différences supplémentaires concernant la structure que vous pourriez mentionner.

  1. DLL et EXE partagent la même structure de fichiers - Portable Executable ou PE. Pour différencier les deux, on peut regarder dans le membre Characteristics de IMAGE_FILE_HEADER dans IMAGE_NT_HEADERS . Pour une DLL, l'indicateur IMAGE_FILE_DLL (0x2000) est activé. Pour un EXE, c’est l’indicateur IMAGE_FILE_EXECUTABLE_IMAGE (0x2).
  2. Les fichiers PE sont composés d’en-têtes et de plusieurs sections. Il y a généralement une section pour le code, une section pour les données, une section listant les fonctions importées et une section pour les ressources. Certaines sections peuvent contenir plus d'une chose. L'en-tête décrit également une liste de répertoires de données situés dans les sections. Ces répertoires de données permettent à Windows de trouver ce dont il a besoin dans le PE. Mais un type de répertoire de données qu'un fichier EXE n'aura jamais (sauf si vous construisez un fichier EXE de Frankenstein) est le répertoire d'exportation. C’est là que les fichiers DLL contiennent une liste de fonctions qu’ils exportent et peuvent être utilisés par d’autres fichiers EXE ou DLL. De l'autre côté, chaque DLL et chaque EXE contient un répertoire d'importation dans lequel sont répertoriées les fonctions et les fichiers DLL nécessaires à l'exécution.
  3. Le membre ImageBase figure également dans les en-têtes PE ( IMAGE_OPTIONAL_HEADER ). Il spécifie l'adresse virtuelle à laquelle le PE suppose qu'il sera chargé. S'il est chargé à une autre adresse, certains pointeurs pourraient pointer vers la mauvaise mémoire. Comme les fichiers EXE sont parmi les premiers à être chargés dans leur nouvel espace d'adressage, le chargeur Windows peut assurer une adresse de chargement constante, généralement 0x00400000. Ce luxe n'existe pas pour une DLL. Deux fichiers DLL chargés dans le même processus peuvent demander la même adresse. C'est pourquoi une DLL possède un autre répertoire de données appelé Répertoire de transfert de base qui réside généralement dans sa propre section - .reloc . Ce répertoire contient une liste d’endroits dans la DLL qui doivent être rebasés / corrigés pour qu’ils pointent vers la bonne mémoire. La plupart des fichiers EXE ne possèdent pas ce répertoire, mais certains anciens compilateurs les génèrent.

Vous pouvez en savoir plus sur ce sujet @ MSDN .

Cette réponse était un peu plus détaillée que je ne le pensais, mais lisez-la.

DLL:
Dans la plupart des cas, un fichier DLL est une bibliothèque . Il existe plusieurs types de bibliothèques, dynamiques et statiques - en savoir plus sur la différence . DLL correspond à la lien dynamique bibliothèque qui indique que c'est une partie du programme mais pas le tout. Il est composé de composants logiciels réutilisables ( bibliothèque ) que vous pourriez utiliser pour plus d’un programme . N'oubliez pas qu'il est toujours possible d'utiliser le code source de la bibliothèque dans de nombreuses applications en utilisant le copier-coller. Toutefois, l'idée d'une bibliothèque DLL / statique est que vous pouvez mettre à jour le code d'une bibliothèque et mettre simultanément toutes les applications à jour en utilisant ça - sans compiler.

Par exemple:
Imaginez que vous créez un composant d'interface graphique Windows semblable à un bouton . em> . Dans la plupart des cas, vous voudrez réutiliser le code que vous avez écrit car il s’agit d’un composant complexe, mais commun . Vous souhaitez que de nombreuses applications l’utilisent, mais vous ne souhaitez pas leur attribuer la valeur. code source Vous ne pouvez pas copier-coller le code du bouton dans chaque programme. Vous décidez donc de créer un DL-Library (DLL) .

Cette bibliothèque "Bouton" est requise par les éléments coupables EXE pour s'exécuter. Sans elle, ils ne s'exécuteront pas car ils ne savent pas comment créer le bouton. seulement comment lui parler.

De même, une DLL ne peut pas être exécutée - exécutée, car elle ne fait partie du programme mais ne dispose pas des informations nécessaires pour créer un " quot; process ".

EXE:
Un exécutable est le programme . Il sait comment créer un processus et comment dialoguer avec la DLL. Il a besoin de la DLL pour créer un bouton. Sans lui, l'application ne s'exécutera pas - ERREUR.

espérons que cela aide ....

La DLL et le fichier EXE sont tous deux des formats de Portable Executable (PE)

.

Une bibliothèque de liens dynamiques (DLL) est une bibliothèque et ne peut donc pas être exécuté directement. Si vous essayez de l'exécuter, vous obtiendrez une erreur concernant un point d'entrée manquant. Il a besoin d’un point d’entrée (fonction principale) pour être exécuté. Ce point d’entrée peut être n’importe quelle application ou exe. La liaison DLL se produit au moment de l'exécution. C’est pourquoi il est appelé "Lien dynamique". bibliothèque.

Un fichier exécutable (EXE) est un programme qui peut être réalisé. Il a son propre point d'entrée. Un drapeau à l'intérieur de l'en-tête PE indique de quel type de fichier il s'agit (sans importance de l'extension de fichier). L'en-tête PE a un champ où réside le point d'entrée du programme. Dans les DLL, il n'est pas utilisé (ou du moins pas comme point d'entrée).

Il existe de nombreux logiciels disponibles pour vérifier les informations d'en-tête. La seule différence qui fait que les deux fonctionnent différemment est le bit dans l'en-tête, comme indiqué dans le diagramme ci-dessous.

  

en-tête

Le fichier EXE n'a qu'une seule entrée principale, ce qui signifie qu'il est une application isolée. Lorsqu'un système lance l'exe, un nouveau processus est créé alors que les DLL ont de nombreux points d'entrée. Ainsi, lorsque l'application ne le lance pas, elle peut être réutilisée et versionnée. Les DLL réduisent l’espace de stockage car différents programmes peuvent utiliser la même DLL.

Dll v / s Exe

1) Le fichier DLL est une bibliothèque de liens dynamiques qui peut être utilisée dans des fichiers exe et autres fichiers dll.
  Le fichier EXE est un fichier exécutable exécuté dans un répertoire séparé. processus géré par le système d'exploitation.

2) Les DLL ne sont pas directement exécutables. Il s'agit de fichiers distincts contenant des fonctions pouvant être appelées par des programmes et d'autres DLL pour effectuer des calculs et des fonctions.
 Un EXE est un programme qui peut être exécuté. Ex: programme Windows

3) Réutilisabilité
DLL: Ils peuvent être réutilisés pour une autre application. Tant que le codeur connaît les noms et les paramètres des fonctions et procédures du fichier DLL.
EXE: uniquement à des fins spécifiques.

4) Une DLL partagerait le même processus et le même espace mémoire de l'application appelante alors qu'un fichier
 EXE crée son processus et son espace mémoire séparés.

5) Utilisations
DLL: vous voulez que plusieurs applications l'utilisent mais vous ne voulez pas leur donner le code source. Vous ne pouvez pas copier-coller le code du bouton dans chaque programme. Vous décidez donc de créer une bibliothèque DL (bibliothèque). ).

EXE: lorsque nous travaillons avec des modèles de projet tels que les applications Windows Forms, les applications console, les applications WPF et les services Windows, ils génèrent un assemblage exe lors de la compilation.

6) Similarités:
Les fichiers DLL et EXE sont des fichiers binaires dotés d'une structure imbriquée complexe définie par le format Portable Executable. Ils ne sont pas conçus pour être modifiables par les utilisateurs.

Deux choses: l'extension et l'indicateur d'en-tête stockés dans le fichier.

Les deux fichiers sont des fichiers PE. Les deux contiennent exactement la même disposition. Une DLL est une bibliothèque et ne peut donc pas être exécutée. Si vous essayez de l'exécuter, vous obtiendrez une erreur concernant un point d'entrée manquant. Un EXE est un programme qui peut être exécuté. Il a un point d'entrée. Un drapeau à l'intérieur de l'en-tête PE indique de quel type de fichier il s'agit (sans importance de l'extension de fichier). L'en-tête PE a un champ où réside le point d'entrée du programme. Dans les DLL, il n'est pas utilisé (ou du moins pas comme point d'entrée).

Une différence mineure est que, dans la plupart des cas, les DLL ont une section d'exportation où les symboles sont exportés. Les EXE ne doivent jamais avoir de section d’exportation car ils ne sont pas des bibliothèques, mais rien n’empêche cela. Le chargeur Win32 ne s’en soucie pas.

Autre que cela, ils sont identiques. En résumé, les fichiers EXE sont des programmes exécutables, tandis que les DLL sont des bibliothèques chargées dans un processus et contiennent une sorte de fonctionnalité utile telle que la sécurité, l’accès à une base de données ou autre.

Un fichier EXE est visible par le système sous la forme d'un exécutable Win32 standard. Son entrée le point fait référence à un petit chargeur qui initialise le runtime .NET et dit pour charger et exécuter l’assemblage contenu dans le fichier EXE. Une DLL est visible par le système en tant que DLL Win32 mais le plus probablement sans aucune points d'entrée. Le runtime .NET stocke des informations sur le contenu assemblage dans son propre en-tête.

  

dll est une collection de fichiers réutilisables.   fonctions où en tant que .exe est un   exécutable qui peut appeler ces   fonctions

Le fichier .exe est le programme. Le fichier .dll est une bibliothèque à laquelle un fichier .exe (ou un autre fichier .dll) peut appeler.

Ce que dit sakthivignesh peut être vrai dans la mesure où un .exe peut en utiliser un autre comme s’il s’agissait d’une bibliothèque, ce qui est fait (par exemple) avec certains composants COM. Dans ce cas, l'esclave "& esclave" .exe est un programme séparé (à proprement parler, un processus séparé - pouvant s’exécuter sur une machine distincte), mais qui accepte et gère les requêtes provenant d’autres programmes / composants / peu importe.

Cependant, si vous choisissez simplement des fichiers .exe et .dll aléatoires dans un dossier de vos fichiers de programme, il y a de fortes chances que COM ne soit pas pertinent: il ne s'agit que d'un programme et de ses bibliothèques liées dynamiquement.

À l'aide des API Win32, un programme peut charger et utiliser une DLL à l'aide des fonctions API LoadLibrary et GetProcAddress, IIRC. Il y avait des fonctions similaires dans Win16.

COM est à bien des égards une évolution de l’idée de la DLL, à l’origine conçue comme la base de OLE2, alors que .NET est le descendant de COM. Les DLL existent depuis Windows 1, IIRC. C’était à l’origine un moyen de partager du code binaire (en particulier des API système) entre plusieurs programmes en cours d’exécution afin de minimiser l’utilisation de la mémoire.

& # 9679; .exe et dll sont la version compilée du code c # qui sont aussi appelés assemblées.

& # 9679; .exe est un fichier exécutable autonome, ce qui signifie qu'il peut être exécuté directement.

& # 9679; .dll est un composant réutilisable qui ne peut pas être exécuté directement et qui nécessite d'autres programmes pour l'exécuter.

Un exe est un programme exécutable alors qu'une DLL est un fichier qui peut être chargé et exécuté dynamiquement par les programmes.

Différence entre DLL et EXE:

1) La DLL est un composant en cours de traitement, ce qui signifie qu'elle doit être exécutée dans le même espace mémoire que le processus client. EXE est un composant Out-Process, ce qui signifie qu'il s'exécute dans son propre espace mémoire séparé.

2) La DLL contient des fonctions et des procédures que d'autres programmes peuvent utiliser (favorise la réutilisabilité) alors que EXE ne peut pas être partagé avec d'autres programmes.

3) Les DLL ne peuvent pas être exécutées directement car elles sont conçues pour être chargées et exécutées par d'autres programmes. EXE est un programme qui est exécuté directement.

La principale différence entre la DLL et le fichier EXE est que la DLL n’a pas de point d’entrée et que le fichier EXE en a un. Si vous êtes familier avec c ++, vous constaterez que le fichier de compilation EXE a la fonction d’entrée main () et que la DLL ne le fait pas:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top