Frage

Ich mag den genauen Unterschied zwischen der DLL und EXE-Datei kennen.

War es hilfreich?

Lösung

EXE:

  1. Es ist eine ausführbare Datei
  2. Wenn eine ausführbare Datei geladen wird, wird kein Export genannt, sondern nur der Modul Einstiegspunkt.
  3. Wenn ein System neue ausführbare Datei startet ein neuer Prozess wird erstellt
  4. Der Eintrag Faden wird in Zusammenhang mit dem Haupt-Thread des Prozesses genannt.

DLL:

  1. Es ist eine Dynamic Link Library
  2. Es gibt mehrere exportierte Symbole.
  3. Das System lädt eine DLL in den Kontext eines bestehenden Prozesses.

Weitere Informationen: 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

Referenz: http: //www.dotnetspider. com / forum / 34260-Was-Unterschied-zwischen-dll-exe.aspx

Andere Tipps

Ich weiß nicht, warum jeder wird diese Frage in Zusammenhang mit .NET zu beantworten. Die Frage war nur ein allgemeiner und nicht .NET überall erwähnen.

Nun, die wichtigsten Unterschiede sind:

EXE

  1. Eine exe läuft immer in seinem eigenen Adressraum das heißt, es ist ein separater Prozess.
  2. Der Zweck einer EXE ist eine separate Anwendung seiner eigenen zu starten.

DLL

  1. Eine DLL muss immer eine Host-exe ausführen. das heißt, es kann nie in seinem eigenen Adressraum ausgeführt werden.
  2. Der Zweck einer DLL ist eine Sammlung von Methoden / Klassen zu haben, die von einer anderen Anwendung wiederverwendet werden kann.
  3. DLL ist die Microsoft-Implementierung von einer gemeinsam genutzten Bibliothek.

Das Dateiformat von DLL und exe ist im Wesentlichen gleich. Windows erkennt den Unterschied zwischen DLL und EXE durch PE-Header in der Datei. Einzelheiten zu PE-Header, einen Blick auf diese Artikel auf MSDN haben

Der Unterschied besteht darin, dass eine EXE einen Eintrittspunkt ist, wird eine „main“ Methode, die bei der Ausführung ausgeführt wird.

Der Code innerhalb einer DLL muss aus einer anderen Anwendung aufgerufen werden.

Es gibt ein paar weitere Unterschiede der Struktur in Bezug auf die Sie erwähnen könnte.

  1. Sowohl DLL und EXE teilen sich die gleiche Dateistruktur - Portable Executable oder PE. Zur Unterscheidung zwischen den beiden kann man sehen im Characteristics Mitglied IMAGE_FILE_HEADER innerhalb IMAGE_NT_HEADERS. Für eine DLL, hat es die IMAGE_FILE_DLL (0x2000) Flag eingeschaltet. Für eine EXE ist es die IMAGE_FILE_EXECUTABLE_IMAGE (0x2) Flagge.
  2. PE-Dateien bestehen aus einigen Header und eine Anzahl von Abschnitten. Es gibt in der Regel einen Abschnitt für Code, einen Abschnitt für Daten, einen Abschnitt importierten Funktionen Auflistung und einen Abschnitt für Ressourcen. Einige Abschnitte können mehr als eine Sache enthalten. Der Header beschreibt auch eine Liste von Datenverzeichnissen, die in den Abschnitten befinden. Diese Datenverzeichnisse sind, was Windows ermöglicht zu finden, was es in der PE muss. Aber eine Art von Datenverzeichnis, die eine EXE nie haben (es sei denn, Sie bauen ein franken EXE) ist das Exportverzeichnis. Dies ist, wo DLL-Dateien eine Liste von Funktionen haben sie exportieren und können durch andere EXE oder DLL-Dateien verwendet werden. Auf der anderen Seite, jede DLL und EXE haben ein Importverzeichnis, in dem es um die Funktionen auflistet und DLL-Dateien, um sie auszuführen erfordert.
  3. Auch in den PE-Header (IMAGE_OPTIONAL_HEADER) ist das ImageBase Mitglied. Es gibt die virtuelle Adresse, an der die PE sie geladen wird annimmt. Wenn es an einer anderen Adresse geladen wird, könnten einige Hinweise auf den falschen Speicher zeigen. Als EXE-Dateien unter dem ersten sind in ihren neuen Adressraum geladen werden, kann die Windows-Lade eine konstante Last-Adresse sicherzustellen und das ist in der Regel 0x00400000. Das Luxus gibt es nicht für eine DLL. Zwei DLL-Dateien in den gleichen Prozess geladen können die gleiche Adresse anfordern. Aus diesem Grund ist eine DLL ein anderes Datenverzeichnis namens Base-Relocation-Verzeichnis hat, die in der Regel in einem eigenen Abschnitt befindet - .reloc. Dieses Verzeichnis enthält eine Liste von Orten in der DLL, die indexierten / gepatcht werden müssen, damit sie an den richtigen Speicher zeigen würden. Die meisten EXE-Dateien mit diesem Verzeichnis nicht haben, aber einige alte Compiler sie generieren.

Sie können mehr zu diesem Thema lesen @ MSDN .

Diese Antwort war ein wenig detaillierter als ich dachte, aber lesen Sie es durch.

DLL:
In den meisten Fällen ist eine DLL-Datei eine Bibliothek . Es gibt ein paar Arten von Bibliotheken, dynamisch und statisch - über den Unterschied lesen . DLL steht für Dynamic Link Bibliothek , die uns sagt, dass es a Teil des Programms aber nicht die ganze Sache. Es ist aus wiederverwendbaren Software-Komponenten ( Bibliothek ), die Sie für mehr als ein einzelnes Programm . Denken Sie daran, dass es immer möglich, die Bibliothek Quellcode in vielen Anwendungen zu verwenden, mit Copy-Paste, aber die Idee einer DLL / Static Library ist, dass Sie den Code einer Bibliothek aktualisieren konnte und gleichzeitig die Aktualisierung nicht alle Anwendungen mit es - ohne zu kompilieren.

Beispiel:
Stellen Sie sich vor Sie erstellen eine Windows-GUI-Komponente wie ein Button . In den meisten Fällen würden Sie wieder verwenden Sie den Code geschrieben haben, weil es ein Komplex ist, sondern ein gemeinsam Komponente - Sie wollen viele Anwendungen, es zu benutzen, aber Sie wollen, dass sie das geben, Quellcode Sie können den Code für die Schaltfläche in jedem Programm nicht kopieren und einfügen, so Sie sich entscheiden, ein DL-Library (DLL) .

Das „Taste“ Bibliothek wird von erforderlich EXE cutables zu laufen, und ohne sie werden sie nicht ausgeführt werden, weil sie nicht wissen, wie die Schaltfläche erstellen, nur wie man es sprechen.

Ebenso kann eine DLL kann nicht ausgeführt werden - laufen, denn es ist nur ein Teil des Programms, aber nicht über die Informationen, die ein "Prozess" .

EXE:
Eine ausführbare Datei das Programm . Er weiß, wie man eine Prozess und wie man die DLL sprechen. Es muss die DLL eine Schaltfläche zu erstellen, und ohne sie die Anwendung nicht ausgeführt -. ERROR

hoffe, das hilft ....

Sowohl DLL und EXE sind Portable Executable (PE) Formats

Dynamic Link Library (DLL) ist eine Bibliothek und kann daher nicht direkt ausgeführt werden. Wenn Sie versuchen, es laufen Sie eine Fehlermeldung über einen fehlenden Eintrag Punkt. Es muss ein Einstiegspunkt (Hauptfunktion) ausgeführt werden, dass Einstiegspunkt jede Anwendung oder exe sein kann. DLL Bindung erfolgt zur Laufzeit. Deshalb seine genannte "Dynamic Link" Bibliothek.

Ein Executable (EXE) ist ein Programm, das sein kann, hingerichtet. Es hat seinen eigenen Einstiegspunkt. Ein Flag innerhalb der PE-Header gibt an, welche Art von Datei, um sie (irrelevant der Dateierweiterung) ist. Der PE-Header hat ein Feld, in dem der Einstiegspunkt für das Programm befindet. In DLLs wird nicht verwendet (oder zumindest nicht als Einstiegspunkt).

Es gibt viele Software verfügbar Header-Informationen zu überprüfen. Der einzige Unterschied sowohl zu verursachen, anders zu arbeiten ist das Bit im Header wie in Abbildung unten gezeigt.

  

header

EXE-Datei hat nur einzelne Haupteintrag bedeutet es isolierte Anwendung ist, wenn ein System exe startet ein neuer Prozess erstellt wird, während DLLs so viele Einstiegspunkte haben, wenn die Anwendung es kein neuer Prozess gestartet verwenden, können DLL wiederverwendet und versioniert werden. DLL reduziert Speicherplatz als andere Programme die gleiche DLL verwenden können.

Dll v / s Exe

1) DLL-Datei ist eine dynamische Link-Bibliothek, die in EXE-Dateien verwendet werden kann, und andere DLL-Dateien.
  EXE-Datei ist eine ausführbare Datei, die in einem separaten läuft Prozess, der von OS verwaltet wird.

2) DLLs sind nicht direkt ausführbar. Sie sind separate Dateien enthalten Funktionen, die von Programmen und anderen DLLs aufgerufen werden können, um Berechnungen und Funktionen ausführen.
 Eine EXE ist ein Programm, das ausgeführt werden kann. Ex: Windows-Programm

3) Reusability
DLL: Sie können für eine andere Anwendung wiederverwendet werden. Solange die Codierer die Namen und die Parameter der Funktionen und Prozeduren in der DLL-Datei kennen.
EXE:. Nur für bestimmte Zwecke

4) Ein DLL würde den gleichen Prozess und Speicherplatz der rufenden Anwendung während einer
teilen  EXE erstellt seinen separaten Prozess und Speicherplatz.

5) Verwendet
DLL: Sie möchten viele Anwendungen, es zu benutzen, aber Sie wollen sie nicht den Quellcode geben Sie können den Code für die Schaltfläche in jedem Programm nicht kopieren und einfügen, so Sie sich entscheiden, einen DL-Library (DLL erstellen ).

EXE. Wenn wir mit Projektvorlagen arbeiten wie Windows Forms-Anwendungen, Konsolenanwendungen, WPF-Anwendungen und Windows-Dienste erzeugen sie eine exe Montag beim Kompilieren

6) Similarities:
Sowohl DLL und EXE sind binäre Dateien haben eine komplexe verschachtelte Struktur durch das Portable Executable-Format definiert sind, und sie werden nicht von den Benutzern sein editierbar soll.

Zwei Dinge:. Die Erweiterung und den Header-Flag in der Datei gespeichert

Beide Dateien sind PE-Dateien. Beide enthalten die exakt gleiche Layout. Eine DLL ist eine Bibliothek und deshalb nicht ausgeführt werden kann. Wenn Sie versuchen, es laufen werden Sie eine Fehlermeldung über einen fehlenden Eintrag Punkt. Eine EXE ist ein Programm, das ausgeführt werden kann. Es hat einen Einstiegspunkt. Ein Flag innerhalb der PE-Header gibt an, welche Art es (irrelevant die Dateierweiterung) ist. Der PE-Header hat ein Feld, in dem der Einstiegspunkt für das Programm befindet. In DLLs wird nicht verwendet (oder zumindest nicht als Einstiegspunkt).

Ein kleiner Unterschied besteht darin, dass in den meisten Fällen DLLs einen Export Abschnitt, wo Symbole exportiert werden. EXE-Dateien sollten niemals einen Export Abschnitt haben, da sie nicht Bibliotheken sind aber nichts hindert, dass nicht passiert. Die Win32-loader kümmert sich nicht so oder so.

Anders als dass sie identisch sind. So in der Zusammenfassung, EXE-Dateien sind ausführbare Programme, während DLLs Bibliotheken in einen Prozess geladen sind und enthalten eine Art von nützlichen Funktionen wie Sicherheit, Datenbankzugriff oder so etwas.

Eine EXE ist an das System wie eine normale Win32-Exe sichtbar. Sein Eintrag Punkt bezieht sich auf einen kleinen Lader, die die .NET-Laufzeit initialisiert und erzählt er die Anordnung in der EXE enthalten sind, zu laden und auszuführen. Eine DLL ist sichtbar in dem System als Win32-DLL aber wahrscheinlich ohne Einstiegspunkte. Die .NET-Laufzeit speichert Informationen über die enthaltenen Montage in einem eigenen Header.

  

dll ist eine Sammlung von wieder verwendbaren   Funktionen, bei denen als eine Exe ist ein   ausführbare Datei, die diese nennen   Funktionen

Die .exe ist das Programm. Die DLL ist eine Bibliothek, die eine EXE (oder eine andere DLL) können in aufrufen.

Was sakthivignesh sagt kann, daß man wahr sein .exe eine andere verwenden kann, als ob es sich um eine Bibliothek waren, und dies geschehen ist (zum Beispiel) mit einigen COM-Komponenten. In diesem Fall ist der „Slave“ .exe ein separates Programm (streng genommen, ein separater Prozess - vielleicht auf einer anderen Maschine ausgeführt wird)., Aber ein, und verarbeiteten Anforderungen aus anderen Programmen / Komponenten akzeptiert / was auch immer

Wenn Sie jedoch nur eine zufällige .exe auswählen und aus einem Ordner in Ihrem Program Files .dll, stehen die Chancen, dass COM nicht relevant ist - sie sind nur ein Programm und seine dynamisch verknüpften Bibliotheken

.

Win32-APIs verwendet, kann ein Programm laden und eine DLL verwenden, um die Loadlibrary und GetProcAddress API-Funktionen, IIRC. Es gab ähnliche Funktionen in Win16.

COM ist in vielerlei Hinsicht eine Weiterentwicklung der DLL Idee, die ursprünglich als Grundlage für OLE2 concieved, während .NET der Nachkomme von COM ist. DLLs gibt es schon seit Windows 1, IIRC. Sie waren ursprünglich ein Weg Binärcode des Teilens (insbesondere System-APIs) zwischen mehreren laufenden Programme, um die Speichernutzung zu minimieren.

● EXE und DLL sind die kompilierte Version von c # -Code, der auch als genannt werden Baugruppen.

● .exe ist eine eigenständige ausführbare Datei, das heißt, sie direkt ausgeführt werden.

● DLL ist eine wiederverwendbare Komponente, die nicht direkt ausgeführt werden kann, und es erfordert andere Programme, um sie auszuführen.

Eine exe ist ein executible Programm während einer DLL eine Datei, die dynamisch durch Programme geladen und ausgeführt werden kann.

Unterschied in DLL und EXE:

1) DLL ist eine In-Prozess-Komponente, die als der Client-Prozess in dem gleichen Speicherraum Mittel ausgeführt wird. EXE ist eine Out-Process-Komponente, die es bedeutet, in einem eigenen Speicherbereich ausgeführt wird.

2) Die DLL enthält Funktionen und Prozeduren, die anderen Programme verwenden können (fördert reuability), während EXE kann nicht mit anderen Programmen gemeinsam genutzt werden.

3) DLL nicht direkt ausgeführt werden kann, wie sie konzipiert sind von anderen Programmen geladen und ausgeführt werden. EXE ist ein Programm, das direkt ausgeführt wird.

Der Haupt genaue Unterschied zwischen DLL und EXE, dass DLL einen Einstiegspunkt nicht hat und EXE tut. Wenn Sie mit c ++ vertraut sind können Sie das Build EXE sehen hat main () Entry-Funktion und DLL nicht:)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top