Aam*_*mir 120
我不知道为什么每个人都在.NET的背景下回答这个问题.问题是一般问题,并没有在任何地方提到.NET.
那么,主要的区别是:
可执行程序
DLL
DLL和exe的文件格式基本相同.Windows通过文件中的PE标头识别DLL和EXE之间的区别.有关PE标头的详细信息,您可以在MSDN上查看此文章
fir*_*umb 68
可执行程序:
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
Rob*_*Day 28
区别在于EXE有一个入口点,一个将在执行时运行的"main"方法.
需要从另一个应用程序调用DLL中的代码.
kic*_*hik 24
关于您可以提及的结构,还有一些差异.
Characteristics
成员.对于DLL,它打开了(0x2000)标志.对于EXE,它是(0x2)标志.IMAGE_FILE_HEADER
IMAGE_NT_HEADERS
IMAGE_FILE_DLL
IMAGE_FILE_EXECUTABLE_IMAGE
IMAGE_OPTIONAL_HEADER
)中也是ImageBase
成员.它指定PE假定将加载的虚拟地址.如果它被加载到另一个地址,一些指针可能指向错误的内存.由于EXE文件是第一个加载到新地址空间的文件,因此Windows加载程序可以确保恒定的加载地址,通常为0x00400000.DLL没有奢侈品.加载到同一进程中的两个DLL文件可以请求相同的地址.这就是为什么DLL有另一个名为Base Relocation Directory的数据目录,它通常位于自己的部分 - .reloc
.此目录包含DLL中需要重新定位/修补的位置列表,以便它们指向正确的内存.大多数EXE文件没有此目录,但是一些旧的编译器会生成它们.您可以在@ MSDN上阅读有关此主题的更多信息.
han*_*son 19
这个答案比我想象的更详细,但是通读了.
DLL:
在大多数情况下,DLL文件是一个库.有几种类型的库,动态和静态 - 阅读差异.DLL代表动态链接库,它告诉我们它是程序的一部分而不是整个程序.它由可重复使用的软件组件(库)组成,您可以将其用于多个程序.请记住,使用复制粘贴在许多应用程序中始终可以使用库源代码,但DLL /静态库的想法是您可以更新库的代码,同时使用更新所有应用程序它 - 没有编译.
例如:
想象一下,您正在创建一个像Button一样的Windows GUI组件.在大多数情况下,您需要重新使用您编写的代码,因为它是一个复杂但常见的组件 - 您希望许多应用程序使用它但您不希望为它们提供源代码您无法复制- 在每个程序中粘贴按钮的代码,因此您决定要创建DL-Library(DLL).
这个"按钮"库是EXE cutables运行所必需的,如果没有它,它们将无法运行,因为它们不知道如何创建按钮,只知道如何与它对话.
同样,DLL无法执行 - 运行,因为它只是程序的一部分,但没有创建"进程"所需的信息.
EXE:
可执行程序是程序.它知道如何创建进程以及如何与DLL进行通信.它需要 DLL来创建一个按钮,如果没有它,应用程序就不会运行 - 错误.
希望这可以帮助....
Zah*_*med 14
DLL和EXE都是可移植可执行(PE)格式
甲动态链接库(DLL)是一个库,因此无法直接执行.如果您尝试运行它,您将收到有关缺少入口点的错误.它需要一个入口点(主函数)来执行,该入口点可以是任何应用程序或exe.DLL绑定在运行时发生.这就是为什么它被称为"动态链接"库.
一个可执行文件(EXE)是可被执行的程序.它有自己的切入点.PE标头内的标志指示它是哪种类型的文件(与文件扩展名无关).PE头有一个字段,程序的入口点位于该字段中.在DLL中,它不被使用(或者至少不作为入口点).
有许多软件可用于检查标题信息.导致两者工作方式不同的唯一区别是标题中的位,如下图所示.
EXE文件只有单个主条目意味着它是独立的应用程序,当系统启动exe时,会创建一个新进程,而DLL有很多入口点,所以当应用程序使用它时没有新的进程启动,DLL可以重用和版本化.DLL减少了存储空间,因为不同的程序可以使用相同的DLL.
dll v/s exe
1)DLL文件是一个动态链接库,可以在exe文件和其他dll文件中使用。
EXE 文件是一个可执行文件,它在由操作系统管理的单独进程中运行。
2)DLL 不能直接执行。它们是单独的文件,其中包含可由程序和其他 DLL 调用以执行计算和函数的函数。
EXE 是可以执行的程序。例如:Windows 程序
3) 可重用性
DLL:它们可以重用于其他一些应用程序。只要编码人员知道 DLL 文件中的函数和过程的名称和参数。
EXE:仅用于特定目的。
4) DLL 将共享调用应用程序的相同进程和内存空间,而
EXE 创建其单独的进程和内存空间。
5) 使用
DLL:您希望许多应用程序使用它,但又不想给它们源代码 您无法在每个程序中复制粘贴按钮的代码,因此您决定要创建一个 DL-库 (DLL)。
EXE:当我们使用 Windows 窗体应用程序、控制台应用程序、WPF 应用程序和 Windows 服务等项目模板时,它们会在编译时生成一个 exe 程序集。
6) 相似之处:
DLL 和EXE 都是二进制文件,具有由Portable Executable 格式定义的复杂嵌套结构,它们不能被用户编辑。