友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
荣耀电子书 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

什么是dll文件-第章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






什么是 DLL? 
动态链接库 (DLL) 是包含函数和数据的模块的集合。程序文件(如 。exe 文件或 。dll 文件)在运行时加载这些模块(亦即所需的模块映射到调用进程的地址空间)。下面两类函数定义了 DLL: ? 导出函数:这些函数由其他模块调用。 
? 内部函数:这些函数仅从定义它们的 DLL 中调用。 
DLL 还导出数据。不过,这些数据由相应的函数使用。 
动态链接和静态链接 
动态链接包括系统在加载或运行时查找导出的 DLL 函数的代码所需的信息。 

在静态链接中,链接器将库函数的代码复制到调用 DLL 的每个模块。 

可以通过下列方式调用 DLL 中的函数: ? 加载时动态链接:调用方模块执行显式调用以导出 DLL 函数。为 DLL 创建导入库,然后将 DLL 链接到应用程序。在加载应用程序时,导入库提供加载 DLL 和查找导出的 DLL 函数所需的信息。 
? 运行时动态链接:在运行时加载 DLL 时,调用方模块使用 LoadLibrary 函数或 LoadLibraryEx 函数。调用方模块调用 GetProcAddress 函数以获取导出的 DLL 函数的地址。 
在链接时,Windows 搜索预安装的一组 DLL,例如性能库 (Kernel32。dll) 和安全库 (User32。dll)。然后,Windows 按以下顺序搜索 DLL: 1。 当前进程的可执行程序所在的目录。 
2。 当前目录。 
3。 Windows 系统目录。(GetSystemDirectory 函数获取 Windows 系统目录的路径。) 
4。 Windows 目录。(GetWindowsDirectory 函数获取 Windows 目录的路径。) 
5。 PATH 环境变量中列出的目录。 

注意:LIBPATH 环境变量不用于搜索。 

DLL 和静态库 
? DLL 可节省内存并减少交换。 通过在内存中共享 DLL 的单个副本,多个进程可以同时使用一个 DLL。相比之下,对于使用静态链接库构建的每一个应用程序,Windows 都要在内存中为其加载库代码的一个副本。 
? DLL 可节省磁盘空间。 多个应用程序可以共享磁盘上的一个 DLL 副本。相比之下,使用静态链接库构建的每一个应用程序都需要让链接到程序文件映像的库代码作为一个单独的专用副本。 
? DLL 可节省时间。 更改 DLL 中的函数时,只要函数的参数和返回值不变,就不必重新编译或重新链接使用这些函数的应用程序。但是,如果您使用静态链接的对象代码,则在更改函数后必须重新链接应用程序。 
? DLL 可以共享函数。 在 Win32 中,DLL 可以共享函数。默认情况下,数据对于每个进程来说是独立的。但是,静态库包含针对每一个进程的单独的数据副本和函数。 
DLL 入口点 
DLL 有一个特殊的入口点(DllMain 函数),它在附加和分离进程和线程时运行。此行为允许根据需要创建和销毁数据结构。文件扩展名为 。ocx、。cpl 和 。drv 的文件类型也是 DLL,尽管文件扩展名已改变。在 Windows 2。x 和 Windows 3。x 中,每个 DLL 都只有一个数据段实例,而不管有多少应用程序。在 Windows 32 中,可以将 DLL 标记为共享以导致相同的行为。但是,每个进程的默认设置是拥有 DLL 数据的专用副本。 
您可以通过创建 DLL 实现以下目的: ? 将程序划分为可按需加载的单独模块。 
? 存储特定于语言或特定于区域的资源。 
? 使您自己的应用程序能够使用核心代码库。 
? 生成进程内  对象或 ActiveX 控件 (OCX)。 
? 将 OLE 对象用作进程内 DLL。这一用法可改进 OLE 链接的性能。 
? 使用控制面板扩展或使用某些类型的驱动程序。 

沉余DLL文件,就是无用的DLL文件。 


DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。 DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。 
DLL可在“C:Windows”目录“C:WindowsSystem”目录和程序的安装目录中找到。如果启动程序,但一个或多个DLL文件丢失或毁坏,则会收到出错消息,如“找不到xyz。dll”。如果启动的程序带有一个过期的DLL文件或不匹配的DLL文件,则会出现“未定义的动态链接调用”消息。这时,你可在其他电脑上找到正确的DLL文件并将它拷贝到适当的目录下,程序就能正确运行。 
1、如何了解某应用程序使用哪些DLL文件 
  右键单击该应用程序并选择快捷菜单中的“快速查看”命令,在随后出现的“快速查看”窗口的“引入表”一栏中你将看到其使用DLL文件的情况。 
2、如何知道DLL文件被几个程序使用 
  运行Regedit,进入HKEY_LOCAL_MACHINESoftwareMicrosrftWindowsCurrent… 
VersionSharedDlls子键查看,其右边窗口中就显示了所有DLL文件及其相关数据,其中数据右边小括号内的数字就说明了被几个程序使用,(2)表示被两个程序使用,(0)则表示无程序使用,可以将其删除。 
3、如何解决DLL文件丢失的情况 
  有时在卸载文件时会提醒你删除某个DLL文件可能会影响其他应用程序的运行。所以当你卸载软件时,就有可能误删共享的DLL文件。一旦出现了丢失DLL文件的情况,如果你能确定其名称,可以在Sysbckup(系统备份文件夹)中找到该DLL文件,将其复制到System文件夹中。如果这样不行,在电脑启动时又总是出现“***dll文件丢失……”的提示框,你可以在“开始/运行”中运行Msconfig,进入系统配置实用程序对话框以后,单击选择“System。ini”标签,找出提示丢失的DLL文件,使其不被选中,这样开机时就不会出现错误提示了。 



解决DLL文件错误 


DLL实质上是包含了一些函数和数据的可执行模块,由微软公司提供。它可以被应用程序或其它DLL调用。在项目开发或编程中,它是一个前人劳动的经验集合:各个公司个人在项目开发或编程中都会积累下很多的经验、技巧和专业资料,利用动态链接库的技术,将这些成果经验汇集起来,使资源可以得到更广泛的应用;在个人用户的使用中,它又是包含数据及指令的模块,使各个相对独立的数据能被执行、链接调用。 

  虽然出现DLL文件错误的原因很多,但平常用家遇到的问题归结起来不外乎系统软件方面和硬件方面的问题。 

系统软件方面的解决招式 

  轻手: 
用最新版本的杀毒软件查杀病毒。有相当部分的病毒会造成系统文件的丢失或损坏,所以首先要升级病毒库彻底查杀病毒。 

  中拳: 
使用系统自带的修复或还原功堋T赪IN98、ME中,在“开始—运行”对话框中键入“sfc”并回车,启动“系统文件检查器”进行常规检查。若查出有错误,按照提示从系统盘中提取相关文件即可;在WindowsXP中,Windows文件保护功能可以保护一些系统文件,例如.sys、.dll、.ocx、.ttf、.fon和.exe文件。Windows文件保护在后台运行,可保护Windows安装程序安装的所有文件,而这些文件就保存在windowsxp的安装目录下的\system32\dllcache\下面。windows文件保护需要拷贝或还原文件时,把你的xp安装盘放入或者指定你在硬盘上备份的路径即可。如果是在整理完注册表后出现,则需要恢复注册表。 

  重刀: 
自己动手,丰衣足食。有少部分DLL文件出错是要靠手动解决或升级系统文件解决的。 



  例1:整理系统后,运行realplayer,报告说找不到所需的DLL文件Pncrt.dll,无法启动。 

  解决办法:上网下载新版本realplayer并升级。重新打开realplayer,仍然弹出对话框,说找不到所需的DLL文件Pncrt.dll无法启动。奇怪了,是不是这个DLL文件是系统文件?运行SFC命令,报告无系统文件损坏或丢失,那么肯定这个文件是软件自带的了。于是上网查找资料,说要将注册表中的相关键值删除,重新安装,按此操作进行,也无法解决问题。于是查找Pncrt.dll文件,发现C:\WINDOWS\VCM下有此文件,于是将其复制到realplayer的关联文件夹C:\ProgramFiles\monFiles\Real\mon中,运行realplayer,仍报告出错。查看该文件的属性,发现有“版本”这一项,版本的值为6。0。0。0。于是想到可能是该文件存在,但版本的关联不对,导致出错,于是在存在Pncrt.dll的情况下重新安装新版本的realplayer,运行一切正常,问题解决。 



  例2:WIN98中设置显示属性时出现RUNDLL32故障。 

  解决办法:在“开始—运行”中,输入msconfig,然后在System.ini这一页,打开boot文件夹,按“新增”,新增一行叙述: 

  drivers=mmsystem.dll 

  设定好后,储存你的设定,重新开机即可。 



  例3:在WIN98第二版中使用IBM语音识别系统4。0版后,再使用IE出现“KERNEL32。dll和OLEAUT32。DLL还有MFC42。DLL发现不明问题,无法使用”。 

  解决办法:到c:\windows\system中找到这三个文件并把它们复制下来,复制到IBM语音识别系统的x:\ViaVoice中的bin文件夹;这样我们就可以恢复IE、OE、记事本这些软件所需的DLL文件了。 



硬件方面的解决招式 

  轻脚: 
检查是否有超频。不仅是CPU,包括PCI、显卡、内存的频率都应该检查,特别是在BIOS中的设置;在正常频率和电压下使用有利于硬件设备的稳定性。 

  �
返回目录 上一页 下一页 回到顶部 赞(0) 踩(0)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!