Unterschied zwischen .dll und .exe?
Ich will wissen den genauen Unterschied zwischen der dll-und exe-Datei.
Kommentar zu dem Problem
Sie sollten einige Rahmen hier: Sind Sie ein Anfänger Sind Sie auf der Suche eine gewisse Art von tiefen technischen Spezifikation des PE-Zeug Oder etwas anderes
Es ist wahr, ich bin ein Anfänger. Es ist eine interview-Frage, wie tagged.
Ich denke, dass alle Antworten, war gut und informativ. Ich werde dies überprüfen, je nach dem für mehr, Danke.
Noch wichtiger ist, ist dies eine doppelte inklusive (gelöscht) von sakthivignesh...
InformationsquelleAutor der Frage Umesh Aawte | 2009-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
EXE:
DLL:
Weitere Details: 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-What-difference-between-dll-exe.aspx
InformationsquelleAutor der Antwort firstthumb
Ich weiß nicht, warum jeder ist die Beantwortung dieser Frage im Kontext .NET. Die Frage war allgemein und nicht erwähnen .NET überall.
Gut, die wichtigsten Unterschiede sind:
EXE
DLL
Das format der Datei von DLL-und exe-Datei ist im wesentlichen die gleiche. Windows erkennt den Unterschied zwischen DLL und EXE durch PE-Header in der Datei. Details zu PE-Header, Sie können einen Blick auf diese Artikel auf MSDN
InformationsquelleAutor der Antwort Aamir
Der Unterschied ist, dass eine EXE-Datei hat einen Einstiegspunkt, eine "main" - Methode, die ausgeführt wird, bei der Ausführung.
Den code in einer DLL aufgerufen werden muss, aus einer anderen Anwendung.
InformationsquelleAutor der Antwort Robin Day
Gibt es ein paar mehr Unterschiede in Bezug auf die Struktur, die Sie nennen könnte.
Characteristics
MitgliedIMAGE_FILE_HEADER
innenIMAGE_NT_HEADERS
. Für eine DLL, hat es dieIMAGE_FILE_DLL
(0x2000) - flag eingeschaltet. Für eine EXE ist es dieIMAGE_FILE_EXECUTABLE_IMAGE
(0x2) Flagge.IMAGE_OPTIONAL_HEADER
) ist dieImageBase
Mitglied. Es gibt die virtuelle Adresse, an der die PE nimmt an, dass es geladen wird. Wenn es geladen wird an einer anderen Adresse, einige Hinweise könnten zu dem falschen Speicher. Als EXE-Dateien sind unter den ersten, die geladen werden, in Ihrer neuen Adressraum, der Windows loader kann versichern, eine Konstante Adresse laden und das ist in der Regel 0x00400000. Dass Luxus nicht vorhanden ist für eine DLL. Zwei DLL-Dateien geladen, in den gleichen Prozess kann verlangen, dass der gleiche Adresse. Dies ist der Grund, warum eine DLL hat ein anderes Daten-Verzeichnis mit der Bezeichnung " Basis-Standortwechsel-Verzeichnis befindet sich normalerweise in einem eigenen Abschnitt -.reloc
. Dieses Verzeichnis enthält eine Liste der Orte in der DLL, die muss zurückgesetzt werden/gepatcht werden, damit Sie auf die richtigen Speicher. Die meisten EXE-Dateien nicht in diesem Verzeichnis, aber in einigen alten Compiler generiert.Lesen Sie mehr zu diesem Thema @ MSDN.
InformationsquelleAutor der Antwort kichik
Diese Antwort war etwas Ausführlicher als ich dachte, aber Lesen Sie es durch.
DLL:
In den meisten Fällen, eine DLL Datei ist ein Bibliothek. Es gibt ein paar Arten von Bibliotheken, dynamische und statische Lesen Sie mehr über den Unterschied. DLL steht für dynamische link Bibliothek die uns sagt, dass es ein Teil des Programms aber nicht die ganze Sache. Es ist aus wiederverwendbaren software-Komponenten ( Bibliothek ), die Sie verwenden für mehr als ein einzelnes Programm. Beachten Sie, dass es immer noch möglich, verwenden Sie die library-source-code in vielen Anwendungen mit copy-paste, aber die Idee, eine DLL, Statische Bibliothek ist, dass man den code aktualisieren einer Bibliothek und zur gleichen Zeit aktualisieren Sie alle Anwendungen, die mit es - ohne zu kompilieren.
Zum Beispiel:
Stell dir vor, du bist die Schaffung eines Windows-GUI-Komponente wie ein Taste. In den meisten Fällen werden Sie wollen, um zu re-verwenden Sie den code, den Sie geschrieben haben, weil es eine komplexe, aber ein gemeinsamen Komponente - Sie wollen die vielen Anwendungen, die es verwenden, aber Sie wollen nicht, um Ihnen die source-code-Sie können nicht kopieren und fügen Sie den code für die Schaltfläche in jedem Programm, so dass Sie entscheiden, dass Sie möchten, erstellen Sie eine DL-Library - (DLL -).
Diese "button" Bibliothek erforderlich ist EXEcutables zu führen, und ohne dass es Sie wird nicht ausgeführt werden, weil Sie nicht wissen, wie um die Schaltfläche zu erstellen, nur wie, mit Ihr zu sprechen.
Ebenfalls eine DLL nicht ausgeführt werden kann - laufen, weil es nur einen Teil des Programms, aber nicht über die erforderlichen Informationen zum erstellen einer "Prozess".
EXE:
Eine ausführbare Datei ist das Programm. Es weiß, wie man erstellen Sie eine Prozess und wie zu sprechen, um die DLL. Es muss die DLL zu erstellen Sie eine Schaltfläche, und ohne die die Anwendung nicht ausführen - FEHLER.
hoffe, das hilft....
InformationsquelleAutor der Antwort hannson
Sowohl DLL und EXE sind Portable Executable(PE) Format
Einen Dynamic-link Bibliothek (DLL) ist eine Bibliothek, und kann daher nicht direkt ausgeführt. Wenn Sie versuchen, Sie auszuführen, erhalten Sie eine Fehlermeldung über eine fehlende Einstiegspunkt. Es braucht einen Einstiegspunkt (main-Funktion) ausgeführt, dass der entry point kann eine beliebige Anwendung oder exe-Datei. DLL Bindung erfolgt zur Laufzeit. Das ist, warum seine genannte "Dynamic Link" - Bibliothek.
Einer Ausführbare (EXE -) ist ein Programm, das ausgeführt werden kann. Es hat seinen eigenen Einstiegspunkt. Ein flag innerhalb der PE-header gibt an, welche Art von Datei es ist (unabhängig von der Datei-Erweiterung). Der PE-header hat ein Feld, wo der Einstiegspunkt für das Programm befindet. In den DLLs ist es nicht (oder zumindest nicht als "entry point").
Gibt es viele software verfügbar, so dass Sie die header-Informationen. Der einzige Unterschied, wodurch beide arbeiten, anders ist das bit im header, so wie gezeigt im Diagramm unten.
EXE-Datei hat nur eine einzige Haupt-Eintrag bedeutet, dass es isolierte Anwendung, wenn ein system-exe startet, wird ein neuer Prozess erstellt wird, während DLLs haben viele Einstiegspunkte, damit, wenn die Anwendung es verwenden, kein neuer Prozess gestartet, DLL können wiederverwendet werden und versioniert. DLL reduziert den Speicherplatz, da verschiedene Programme können dieselbe dll verwenden.
InformationsquelleAutor der Antwort Zaheer Ahmed
Zwei Dinge: die Erweiterung und die header-flag in der Datei gespeichert.
Beide Dateien sind PE-Dateien. Beide enthalten den exakt gleichen layout. Eine DLL ist eine Bibliothek, und kann daher nicht ausgeführt werden. Wenn Sie versuchen, führen Sie es, erhalten Sie eine Fehlermeldung über eine fehlende Einstiegspunkt. Eine EXE ist ein Programm, das ausgeführt werden kann. Es verfügt über einen entry point. Ein flag innerhalb der PE-header gibt an, welche Datei-Typ es ist (unabhängig von der Datei-Erweiterung). Der PE-header hat ein Feld, wo der Einstiegspunkt für das Programm befindet. In den DLLs ist es nicht (oder zumindest nicht als "entry point").
Ein geringfügiger Unterschied ist, dass in den meisten Fällen DLLs haben eine export-Abteilung, wo Symbole exportiert werden. EXEs sollte nie eine export-Sektion, da Sie nicht Bibliotheken, aber nichts verhindert, dass aus geschieht. Die Win32-loader kümmert sich nicht, oder so.
Andere, als daß Sie identisch sind. So, in Zusammenfassung, EXE-Dateien sind ausführbare Programme, während DLLs sind Bibliotheken geladen in einem Prozess und enthalten eine Art von nützlichen Funktionen wie security, Datenbank access oder so etwas.
InformationsquelleAutor der Antwort judy smith
Dll-v/s-Exe -
1)DLL-Datei ist eine dynamic link library, die verwendet werden können in exe-Dateien und
anderen dll-Dateien.
EXE-Datei ist eine ausführbare Datei, die ausgeführt wird in einem separaten
Prozess wird verwaltet von OS.
2)DLLs sind nicht direkt ausführbar ist . Sie sind separate Dateien, die Funktionen enthalten, die aufgerufen werden können durch Programme und andere DLLs zum ausführen von Berechnungen und Funktionen.
Eine EXE ist ein Programm, das ausgeführt werden kann . Ex :Windows-Programm
3)Wiederverwendbarkeit
DLL: Sie wiederverwendet werden können für eine andere Anwendung. Solange der coder kennt die Namen und Parameter der Funktionen und Prozeduren in der DLL-Datei .
EXE: Nur für den jeweiligen Zweck .
4)Eine DLL teilen würde, den gleichen Prozess und Speicherbereich der aufrufenden Applikation, während ein
EXE schafft seinen eigenen Prozess und Speicherbereich.
5)Verwendet
DLL: Sie wollen die vielen Anwendungen, die es verwenden, aber Sie wollen nicht, um Ihnen die source-code-Sie können nicht kopieren und fügen Sie den code für die Schaltfläche in jedem Programm, so dass Sie entscheiden, dass Sie möchten, erstellen Sie einen DL-Link Library (DLL).
EXE: Wenn wir die Arbeit mit Projekt-Vorlagen wie Windows Forms-Anwendungen, Konsole-Anwendungen, WPF-Anwendungen und Windows-Dienste, die Sie erzeugen eine exe-assembly, wenn zusammengestellt.
6)Gemeinsamkeiten :
Beide DLL-und EXE sind binäre Dateien haben eine komplexe, verschachtelte Struktur definiert das Portable Executable-format, und Sie sollen nicht bearbeitbar sein durch den Benutzer.
InformationsquelleAutor der Antwort skanda93
Eine EXE-Datei ist im system sichtbar, wie eine regelmäßige Win32-executable. Ihr Eintrag
Punkt bezieht sich auf einen kleinen Bootloader initialisiert .NET-runtime und erzählt
das laden und ausführen der assembly enthalten in der EXE-Datei.
Eine DLL ist im system sichtbar, wie eine Win32-DLL, aber höchstwahrscheinlich ohne jede
Eintrag Punkte. Die .NET-runtime speichert Informationen über die enthaltenen
Montage in einem eigenen header.
InformationsquelleAutor der Antwort rahul
Den .exe ist das Programm. Die .dll ist eine Bibliothek, ein .exe (oder eine andere .dll) aufrufen.
Was sakthivignesh sagt kann wahr sein, dass man in .exe-Datei kann mit einem anderen, als ob es eine Bibliothek, und dies geschieht (zum Beispiel) mit einige COM-Komponenten. In diesem Fall, dass der "slave" .exe-Datei ist ein separates Programm, die, streng genommen, eine separate Prozess - vielleicht läuft auf einer separaten Maschine), aber eine, die akzeptiert und verarbeitet Anfragen von anderen Programmen/Komponenten/was auch immer.
Allerdings, wenn Sie wählen Sie einfach eine zufällige .exe-und .dll-Datei von einem Ordner in Ihrem Programm-Dateien, Chancen sind, dass COM ist nicht relevant - Sie sind nur ein Programm und seine dynamisch verknüpfte Bibliotheken.
Mithilfe von Win32-APIs, kann ein Programm laden und verwenden einer DLL mit der LoadLibrary und GetProcAddress-API-Funktionen, IIRC. Gab es ähnliche Funktionen in Win16.
COM ist in vielerlei Hinsicht eine evolution des DLL-Idee, ursprünglich konzeptioniert als Grundlage für OLE2, in der Erwägung, dass .NET ist der Nachkomme von COM. DLLs haben schon seit Windows 1, IIRC. Sie waren ursprünglich ein Weg, den Austausch von Binär-code (vor allem system-APIs) zwischen mehreren Laufenden Programme, um zu minimieren die Verwendung des Speichers.
InformationsquelleAutor der Antwort Steve314
Eine exe-Datei ist ein executible Programm in der Erwägung, dass Eine DLL ist eine Datei, die geladen und ausgeführt werden können durch Programme dynamisch.
InformationsquelleAutor der Antwort Bhushan Bhangale
● .exe und dll sind die kompilierte version der c# - code, die auch als
Baugruppen.
● .exe ist ein stand-alone ausführbare Datei, was bedeutet, es kann direkt ausgeführt.
● .dll ist eine wiederverwendbare Komponente, die nicht unmittelbar ausgeführt werden, und es erfordert
andere Programme ausführen.
InformationsquelleAutor der Antwort Kedarnath M S
Den großen genaue Unterschied zwischen DLL und EXE, DLL, hat noch nicht einen Ansatzpunkt und eine EXE hat. Wenn Sie sind vertraut mit c++ kann man sehen, dass bauen EXE hat main () - entry-Funktion und der DLL nicht 🙂
InformationsquelleAutor der Antwort faya