La différence entre les deux .dll et .exe?
Je veux savoir la différence exacte entre la dll et exe fichier.
- Vous devez ajouter un peu de contexte ici: vous Êtes un débutant vous Êtes à la recherche d'un certain type de profondeur de la spécification technique de la PE des trucs Ou autre chose
- Il est vrai que je suis un débutant. C'est une interview-question balisé.
- Plus important encore, c'est un doublon dont un (supprimé) par sakthivignesh...
Vous devez vous connecter pour publier un commentaire.
EXE:
DLL:
Pour Plus De Détails: 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
Référence: http://www.dotnetspider.com/forum/34260-What-difference-between-dll-exe.aspx
LibMain
fonction.Je ne sais pas pourquoi tout le monde est de répondre à cette question dans le contexte de .NET. La question était générale, et de ne pas mentionner .NET n'importe où.
Bien, les principales différences sont:
EXE
DLL
Le format de fichier DLL et exe est essentiellement la même. Windows reconnaît la différence entre la DLL et EXE par PE-Tête dans le fichier. Pour les détails de l'en-Tête PE, Vous pouvez jeter un oeil à cet Article sur MSDN
La différence est que l'EXE est un point d'entrée, d'un "principale" de la méthode qui sera exécutée lors de l'exécution.
Le code d'une DLL doit être appelée à partir d'une autre application.
Il y a un peu plus de différences en ce qui concerne la structure que vous pourriez mentionner.
Characteristics
membre deIMAGE_FILE_HEADER
à l'intérieur deIMAGE_NT_HEADERS
. Pour une DLL, il a leIMAGE_FILE_DLL
(0x2000) indicateur allumé. Pour un EXE c'est leIMAGE_FILE_EXECUTABLE_IMAGE
(0x2) drapeau.IMAGE_OPTIONAL_HEADER
) est leImageBase
membre. Il spécifie l'adresse virtuelle à laquelle le PE suppose qu'il va être chargé. S'il est chargé à une autre adresse, quelques indications le mal de mémoire. Comme les fichiers EXE sont parmi les premiers à être chargés dans leur nouvel espace d'adressage, le chargeur de Windows peut assurer une constante de l'adresse de chargement et de ce qui est habituellement le 0x00400000. Que le luxe n'existe pas pour une DLL. Deux fichiers DLL chargées dans le même processus peut demander à la même adresse. C'est pourquoi une DLL a un autre répertoire de données appelée déplacement de la Base d'Annuaire qui réside habituellement dans sa propre section -.reloc
. Ce répertoire contient une liste des lieux à la DLL qui doivent être relocalisée/patché afin qu'ils pointent vers la droite de la mémoire. La plupart des fichiers EXE n'ont pas ce répertoire, mais certains vieux compilateurs génèrent eux.Vous pouvez en lire plus sur ce sujet @ MSDN.
Cette réponse a été un peu plus détaillé que ce que je pensais, mais le lire à travers.
DLL:
Dans la plupart des cas, le fichier DLL est une bibliothèque. Il ya un couple de types de bibliothèques, dynamique et statique - lisez à propos de la différence. DLL est synonyme de lien dynamique bibliothèque qui nous dit que c'est un partie du programme, mais pas l'ensemble de la chose. Il est fait de la réutilisation des composants logiciels (bibliothèque) que vous pourriez utiliser pour plus qu'un seul programme. Gardez à l'esprit qu'il est toujours possible d'utiliser la bibliothèque de code source dans de nombreuses applications utilisant le copier-coller, mais l'idée d'une DLL/Bibliothèque Statique est que vous pouvez mettre à jour le code d'une bibliothèque et en même temps mettre à jour toutes les applications qui l'utilisent - sans compilation.
Par exemple:
Imaginez que vous êtes en train de créer un Windows composant d'interface graphique comme un Bouton. Dans la plupart des cas, vous voulez réutiliser le code que vous avez écrit parce que c'est une question complexe, mais un commune composant que Vous voulez de nombreuses applications pour l'utiliser, mais vous ne voulez pas leur donner le code source, Vous ne pouvez pas copier-coller le code pour le bouton dans chaque programme, de sorte que vous décidez que vous voulez créer un DL-Bibliothèque (DLL).
Ce "bouton" bibliothèque est requis par EXEcutables à exécuter, et sans elle, ils ne vont pas s'exécuter parce qu'ils ne savent pas comment créer le bouton, la seule façon de s'adresser à elle.
De même, une DLL ne peut pas être exécutée, exécuter, parce que c'est seulement une partie du programme, mais n'ont pas les informations nécessaires pour créer une "processus".
EXE:
Un exécutable est le programme. Il sait comment créer un processus et la façon de parler à la DLL. Il besoins la DLL pour créer un bouton, et sans elle, l'application ne fonctionne pas ERREUR.
espère que cela aide....
using SomeClassFromALibrary
, cette bibliothèque est liée au projet via une DLL? Juste essayer de voir si je suis bien comprendreDLL et EXE sont Fichier Exécutable Portable(PE) de Formats
Un Bibliothèque Dynamic-link (DLL) est une bibliothèque et, par conséquent, ne peut pas être exécuté directement. Si vous essayez de l'exécuter, vous obtiendrez un message d'erreur à propos d'un manque de point d'entrée. Il a besoin d'un point d'entrée (fonction principale) à été exécuté, ce point d'entrée peut être n'importe quelle application ou exe. DLL liaison se produit au moment de l'exécution. C'est pourquoi elle est appelée "Dynamic Link library.
Un Exécutable (EXE) est un programme qui peut être exécuté. Il a son propre point d'entrée. Un drapeau à l'intérieur de l'en-tête PE indique le type de fichier qu'il est (pertinence de l'extension de fichier). L'en-tête PE a un domaine où le point d'entrée du programme réside. Dans les Dll il n'est pas utilisé (ou au moins, pas comme un point d'entrée).
Il y a beaucoup de logiciel disponibles pour vérifier les informations d'en-tête. La seule différence, causant à la fois de travailler différemment, c'est le bit dans l'en-tête, comme illustré dans le schéma ci-dessous.
Fichier EXE a une seule entrée principale signifie qu'il est isolé de l'application, lorsqu'un système lance l'exe, un nouveau processus est créé lors de la Dll ont de nombreux points d'entrée donc, lors de l'utilisation de l'application elle pas de nouveau processus a commencé, DLL peuvent être réutilisés et numérotés. DLL réduit l'espace de stockage que les différents programmes peuvent utiliser la même dll.
.exe
ou.dll
n'a pas d'importance? C'est que le drapeau dans l'en-tête vraiment les distingue....Donc, si je fais unexe
et nommez-le via l'interface d'interaction comme un.dll
, mais ensuite changer le drapeau manuellement, il est encore praticable?Dll v/s Exe
1)fichier DLL est une bibliothèque de liens dynamiques qui peuvent être utilisés dans les fichiers exe et
d'autres fichiers dll.
Le fichier exécutable est un fichier exécutable qui s'exécute dans une autre
processus qui est géré par l'OS.
2)les Dll ne sont pas directement exécutable . Ils sont distincts des fichiers contenant des fonctions qui peuvent être appelées par les programmes et autres Dll pour effectuer des calculs et des fonctions.
Un fichier EXE est un programme qui peut être exécuté . Ex :Windows programme
3)Réutilisabilité
DLL: Ils peuvent être réutilisés pour une autre application. Tant que le programmeur connaît les noms et les paramètres des fonctions et des procédures dans le fichier DLL .
EXE: Uniquement pour un but spécifique .
4)UNE DLL serait de partager le même processus et de l'espace mémoire de l'application appelante lorsque l'
EXE crée son propre processus et de la mémoire de l'espace.
5)Utilise
DLL: Vous voulez que de nombreuses applications pour l'utiliser, mais vous ne voulez pas leur donner le code source, Vous ne pouvez pas copier-coller le code pour le bouton dans chaque programme, de sorte que vous décidez que vous voulez créer un DL-Bibliothèque (DLL).
EXE: Lorsque nous travaillons avec des modèles de projet comme des Applications Windows Forms, les Applications de Console, les Applications WPF et les Services Windows ils génèrent un fichier exe de l'assemblée lors de la compilation.
6)Similitudes :
Les deux DLL et EXE sont des fichiers binaires ont un complexe de la structure imbriquée défini par le format de fichier Exécutable Portable, et ils ne sont pas destinés à être modifiable par les utilisateurs.
Deux choses: l'extension et le drapeau d'en-tête stockées dans le fichier.
Les deux fichiers sont des fichiers PE. Les deux contiennent exactement la même mise en page. Une DLL est une bibliothèque et, par conséquent, ne peut pas être exécutée. Si vous essayez de l'exécuter, vous recevrez un message d'erreur à propos d'un manque de point d'entrée. Un fichier 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 le type de fichier qu'il est (pertinence de l'extension de fichier). L'en-tête PE a un domaine où le point d'entrée du programme réside. Dans les Dll il n'est pas utilisé (ou au moins, pas comme un point d'entrée).
Une petite différence est que dans la plupart des cas Dll ont une section d'exportation où les symboles sont exportés. Exe ne devrait jamais avoir une section d'exportation, car ils ne sont pas des bibliothèques, mais rien n'empêche que cela se produise. Win32 chargeur ne se soucient pas de toute façon.
Autres que le fait qu'ils sont identiques. Donc, en résumé, Exe sont des programmes exécutables, tandis que les Dll sont des bibliothèques chargées dans un processus et contiennent une sorte de fonctions utiles comme la sécurité, l'accès à la base ou quelque chose.
Un EXE est visible pour le système régulier d'un exécutable Win32. Son entrée
point se réfère à un petit chargeur qui initialise le .NET runtime et dit
il de charger et d'exécuter l'assemblée contenues dans le fichier EXE.
Une DLL est visible par le système comme une DLL Win32 mais le plus probable, sans
les points d'entrée. L' .NET runtime stocke des informations sur le contenu
assemblée dans son propre en-tête.
L' .exe est le programme. L' .dll est une bibliothèque qui un .exe (ou d'une autre .dll) peut l'appeler.
Ce sakthivignesh dit peut être vrai dans que l'on .exe pouvez utiliser l'autre comme s'il s'agissait d'une bibliothèque, et ce qui est fait (par exemple) avec certains composants COM. Dans ce cas, le "esclave" .exe est un programme distinct (à strictement parler, un processus séparé - peut-être en cours d'exécution sur une machine séparée), mais celui qui accepte et traite les demandes à partir d'autres programmes/composants/whatever.
Cependant, si vous venez chercher un hasard .exe et .dll à partir d'un dossier dans vos Fichiers de Programme, les chances sont que la COM n'est pas pertinent, ils sont juste un programme et ses bibliothèques liées de manière dynamique.
Utilisant des Api Win32, un programme peut charger et utiliser une DLL à l'aide de la fonction LoadLibrary et GetProcAddress fonctions de l'API, IIRC. Il y avait des fonctions similaires dans Win16.
COM est à bien des égards une évolution de la DLL idée, à l'origine conçue comme la base pour OLE2, alors que .NET est le descendant de COM. Dll ont été autour depuis Windows 1, IIRC. Ils étaient à l'origine un moyen de partage de code binaire (en particulier le système Api) entre plusieurs programmes en cours d'exécution afin de minimiser l'utilisation de la mémoire.
● .exe et dll sont la version compilée de code c# qui sont également appelés comme
assemblées.
● .exe est un fichier exécutable, ce qui signifie qu'il peut exécuter directement.
● .dll est un composant réutilisable qui ne peut être exécutée directement et nécessite
d'autres programmes à exécuter.
Un fichier exe est un executible programme alors qu'UNE DLL est un fichier qui peut être chargé et exécuté par des programmes de façon dynamique.
Différence dans la DLL et EXE:
1) DLL est un Composant In-Process qui signifie que, dans le même espace mémoire que le processus client. EXE est un Processus Composant 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 les autres programmes peuvent utiliser (favorise reuability) tout en EXE ne peut pas être partagé avec d'autres programmes.
3) DLL ne peut pas être exécuté directement comme ils sont conçus pour être chargé et exécuté par d'autres programmes. EXE est un programme qui est exécuté directement.
La principale différence exacte entre DLL et EXE DLL n'a pas obtenu un point d'entrée et EXE n'. Si vous êtes familier avec le c++, vous pouvez voir que générer un EXE a main() fonction d'entrée et les DLL n'a pas 🙂