.dll和.exe文件之间的区别?.dll和.exe文件之间的区别?(Difference betw

2019-05-12 15:54发布

我想知道的dll和exe文件之间的确切差异。

Answer 1:

可执行程序:

  1. 这是一个可执行文件
  2. 当加载可执行文件,没有出口被调用,但只有模块的入口点。
  3. 当系统启动新的可执行文件,创建一个新的进程
  4. 入口线程调用该进程的主线程的上下文。

DLL:

  1. 这是一个动态链接库
  2. 有多种导出的符号。
  3. 该系统加载DLL到现有进程的背景下。

了解更多详情: 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

参考: http://www.dotnetspider.com/forum/34260-What-difference-between-dll-exe.aspx



Answer 2:

我不知道为什么每个人都在.NET的情况下回答这个问题。 这个问题是一个一般的,并没有提及任何地方的.NET。

那么,主要的区别是:

可执行程序

  1. 一个EXE文件始终运行在它自己的地址空间,即,它是一个独立的进程。
  2. 一个EXE的目的是为了推出自己的单独的应用程序。

DLL

  1. 一个DLL总是需要一台主机EXE运行。 即,它可从来没有在自己的地址空间中运行。
  2. 一个DLL的目的是为具有方法/类可以从一些其它应用重复使用的集合。
  3. DLL是微软开发的一种共享库。

DLL和EXE的文件格式基本上是相同的。 Windows识别通过PE头文件中的DLL和EXE之间的差异。 对于PE header的细节, 你可以看看MSDN上本条



Answer 3:

所不同的是,一个EXE有一个切入点,“主”的方法,将上执行运行。

一个DLL中的代码需要从其他应用程序调用。



Answer 4:

有关于你可以提到结构的几个不同之处。

  1. DLL和EXE共享相同的文件结构 - 移植可执行,或PE。 为了区分两者,一个可以看在Characteristics的成员IMAGE_FILE_HEADERIMAGE_NT_HEADERS 。 对于一个DLL,它具有IMAGE_FILE_DLL (为0x2000)标志开启。 对于EXE它的IMAGE_FILE_EXECUTABLE_IMAGE (0X2)标志。
  2. PE文件包括一些头和多个部分组成。 通常有代码段,用于数据的部分,一个部分进口上市的功能和对资源的部分。 有些部分可能包含不止一两件事。 头部还介绍了位于部分数据的目录列表。 这些数据目录是什么使Windows查找在PE需要。 但是,一种类型的数据目录,一个EXE将永远不会有(除非你正在构建一个科学怪人EXE)是出口目录。 这是DLL文件,有他们出口的功能列表,并且可以通过其它EXE或DLL文件中使用。 在另一边,每个DLL和EXE拥有它列出了功能的导入目录和DLL文件它需要运行。
  3. 另外,在PE头( IMAGE_OPTIONAL_HEADER )是ImageBase构件。 它指定在该PE假定它会被加载的虚拟地址。 如果在另一个地址加载一些指针会指向错误的记忆。 作为EXE文件当中是第一个被加载到其新的地址空间,Windows加载程序可以保证一个恒定负载地址,这通常是0x00400000。 奢侈品不存在的DLL。 加载到同一过程的两个DLL文件可以请求相同的地址。 这就是为什么一个DLL有一个称为基地搬迁Directory中的另一个数据目录,通常驻留在其自己的部分- .reloc 。 该目录包含在DLL中需要进行重建基础/修补所以他们会指向正确的存储地点列表。 大多数的EXE文件没有这个目录,但一些老的编译器做生成它们。

你可以阅读更多关于这个话题@ MSDN 。



Answer 5:

这个答案是比我想象的,但读它通过一个小更详细。

DLL:
在大多数情况下,一个DLL文件是一个图书馆 。 有一对夫妇的类型库,动态和静态的- 阅读的差异 。 DLL代表动态链接 ,它告诉我们,这是该计划的一部分 ,但不是全部的事情。 它是由可重用的软件组件(的图书馆 ,你可以使用比单一计划的更多 )。 请记住,它总是可以使用在使用复制粘贴许多应用程序库的源代码,而是一个DLL的想法/静态库是,你可以使用更新库的代码,并在同一时间更新所有的应用程序它 - 不编译。

例如:
想象一下,你正在创建一个Windows图形用户界面组件如Button。 在大多数情况下,你会想重新使用的代码你写的,因为它是一个复杂的,但一个共同的组件-你想许多应用程序使用它,但你不想给他们的源代码无法复制-粘贴在每一个程序按钮的代码,所以你决定要建立一个DL-库(DLL) 。

这个“按钮”库由EXE需要cutables运行,没有它,他们将无法运行,因为他们不知道如何创建按钮,只是如何说话吧。

同样,DLL不能执行-运行,因为这只是计划的一部分,但没有创建所需的信息“过程” 。

可执行程序:
可执行的程序 。 它知道如何创建一个过程 ,以及如何跟我们的DLL。 它需要的DLL创建一个按钮,没有它,应用程序不运行-错误。

希望这可以帮助....



Answer 6:

DLL和EXE是可移植可执行(PE)的格式

动态链接库(DLL)是一个库,因此无法直接执行。 如果您尝试运行它,你会得到有关缺失入口点错误。 它需要一个入口点(主要功能),以得到执行,该入口点可以是任何应用程序或EXE。 DLL绑定在运行时发生。 这就是为什么它被称为“动态链接”库。

一个可执行文件(EXE)是可被执行的程序。 它有自己的入口点。 PE头内部的标志指示它是(无关文件扩展名的),该类型的文件。 PE头具有其中入口点程序驻留的字段。 在DLL中它不使用(或至少不为入口点)。

有许多软件可用于检查头信息。 使两个不同的工作,唯一的区别是在报头中的位如示于下图。

EXE文件只有一个主入口意味着它是独立的应用程序,当系统启动的EXE,DLL的同时,有许多切入点,所以当应用程序使用它没有新的进程开始,DLL可重复使用和版本创建一个新的进程。 DLL减少了存储空间,不同的程序可以使用同一个DLL。



Answer 7:

DLL文件/秒的Exe

1)DLL文件是一个动态链接库可以在exe文件和其它DLL文件中使用。
EXE文件是它运行在单独的进程是由OS管理的可执行文件。

2)DLL是不直接执行。 它们含有可以通过程序和其他DLL调用来执行计算和功能功能独立的文件。
一个EXE是可以执行的程序。 例如:Windows程序

3)可重用性
DLL:他们可以为其他应用程序重复使用。 只要编码器知道在DLL文件中的函数和过程的名称和参数。
EXE:仅适用于特定的目的。

4)DLL将共享而一个调用应用程序的相同过程和存储器空间
EXE创建其独立的进程和内存空间。

5)用途
DLL:你想许多应用程序使用它,但你不想给他们的源代码不能复制粘贴在每一个程序按钮的代码,所以你决定要建立一个DL-库(DLL )。

EXE:当我们与项目模板的工作就像Windows窗体应用程序,控制台应用程序,WPF应用程序和Windows服务编译时生成exe文件汇编。

6)相似点:
DLL和EXE是二进制文件必须通过移植可执行格式定义的复杂的嵌套结构,它们并非是由用户编辑。



Answer 8:

两件事情:扩展和存储在文件中的头标志。

这两个文件是PE文件。 两者都包含完全相同的布局。 DLL是一个库,因此不能被执行。 如果您尝试运行它,你会得到关于缺少入口点的错误。 一个EXE是可以执行的程序。 它有一个入口点。 PE头部内的标志指示哪些文件类型是(无关的文件扩展名的)。 PE头具有其中入口点程序驻留的字段。 在DLL中它不使用(或至少不为入口点)。

一个微小的差别是,在大多数情况下的DLL有一个出口部分,其中的符号被导出。 EXE文件不应该有一个出口部分,因为它们不是库,但没有什么能阻止这种情况的发生。 Win32加载不关心任何一种方式。

除此之外,它们是相同的。 所以,总的来说,EXE文件是可执行程序,而DLL加载到进程库和含有一些有点像安全,数据库访问或一些有用的功能。



Answer 9:

exe文件是系统作为一个常规的Win32可执行程序可见。 它的切入点是指小型装载机用于初始化.NET运行库,并告诉它加载和执行包含在EXE的程序集。 DLL是没有任何入口点可见该系统作为一个Win32 DLL,但最有可能的。 .NET运行库存储有关它自己的头所包含的程序集信息。

DLL是可重复使用的函数的集合,其中作为一个.exe是可以调用这些函数的可执行



Answer 10:

该.exe文件是程序。 该.dll是一个。exe(或另一.DLL)可以调用到库中。

什么sakthivignesh说,可在一个.exe文件可以使用另一种,就好像它是一个真正的图书馆,而做到这一点(例如)与一些COM组件。 在这种情况下,“奴”的.exe是一个独立的程序(严格地说,一个独立的过程 - 也许是一个单独的机器上运行),但一个接受和处理来自其他程序/组件/不管请求。

但是,如果你随便挑一个随机的.exe和从您的Program Files文件夹.dll文件,赔率是,COM是不相关的 - 他们只是一个程序及其动态链接库。

使用Win32 API的,程序可以加载和使用LoadLibrary和GetProcAddress API函数,IIRC使用DLL。 有类似的功能在Win16的。

COM是在许多方面的DLL想法,原本concieved作为OLE2基础的演变,而.NET是COM的后裔。 DLL文件已经存在了自Windows 1,IIRC。 他们最初的以尽量减少内存使用共享多个正在运行的程序之间的二进制代码(尤其是系统API)的方式。



Answer 11:

●.exe文件和DLL是C#代码,也被称为程序集的编译版本。

●.exe文件是一个独立的可执行文件,这意味着它可以直接执行。

●.dll文件是不能直接执行一个可重用的部件,它需要其他程序来执行它。



Answer 12:

一个exe是executible程序而A DLL是可以由程序动态地加载并执行的文件。



Answer 13:

差异DLL和EXE:

1)DLL是这意味着在相同的存储空间作为客户端进程中运行的进程内组件。 EXE是停止进程组件,这意味着它在其自己的单独的存储器空间中运行。

2)DLL包含其它程序可以使用(促进reuability),而EXE不能与其他程序共享的功能和程序。

3)DLL不能直接为它们被设计用来加载和其他程序的运行执行。 EXE是直接执行的程序。



Answer 14:

DLL和EXE之间的主要区别精确该DLL还没有得到一个切入点和EXE一样。 如果你熟悉C ++中,你可以看到,编译EXE主要有()入口函数和DLL不:)



文章来源: Difference between .dll and .exe?
标签: windows dll exe