您的位置:首页 > 其它

程序集.dll和.exe的联系和区别

2013-12-16 13:26 239 查看
一:DLL中包含了什么?

DLL和EXE文件一样,其中包含的也是程序的二进制执行代码和程序所需的资源(比如图标、对话框、字符串等),可是为什么要把代码放在DLL里面,而不是做成EXE呢?其实DLL中的代码是以API函数形式出现的,通俗地说,DLL中包含的程序代码都被做成了一个个小模块,应用程序通过按下所需DLL中特定的按钮,来调用DLL中这个按钮所代表的功能。在使用“记事本”等程序时,如果要保存文件或打开文件,就会弹出通用文件对话框,让我们选择文件位置。你可知道,这就是调用了系统底层DLL中的通用对话框界面。

二:为什么要用DLL?

刚才在谈到这个问题的时候,我们只是解释了DLL将程序代码封装成函数的原理。为什么封装成函数,就能成为系统中大量使用DLL的理由呢?

  ①扩展应用程序
 ②便于程序员合作
③节省内存
④共享程序资源
⑤解决应用程序本地化问题

三:用DLL看穿EXE的实质?

刚才得到了QQ.exe所使用的DLL列表,其实通过这个列表,还能分析出很多别的信息。比如其中包含MFC42.dll,所以可以判断QQ.exe是采用VC(即VisualC++)编写的,而包含WSOCK32.dll则说明这个程序带有网络通讯功能(废话!QQ如果不能网络通讯还有什么用……)。以下是一个简表,大家在分析别的EXE时可以根据其所使用的DLL来对其功能进行初步判断。

  DLL文件名 可以判断出的EXE信息

  MFC42.dll 使用VC5.0/6.0编写。

  VBRun*.dll “*”代表数字版本号,使用VB3.0/4.0编写。

  MSVBVM50.dll 使用VB5.0编写,在Windows 98(SE)上自带该DLL。

  MSVBVM60.dll 使用VB6.0编写,在Windows Me/2000/XP等系统上自带该DLL。

  ADVAPI32.dll 可能会进行注册表操作。

  WSOCK32.dll 具备网络通讯功能。

  WS2_32.dll 具备网络通讯功能。

  WININET.dll 具备HTTP浏览、下载等功能,典型的例子是浏览器、下载工具。

  WINMM.dll 具备多媒体播放能力。

  DDRAW.dll 游戏、高级图像处理工具。

  D3D*.dll 3D游戏,或者动画处理工具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: