dll库是什么意思,dll 库
DLL是什么意思
什么是
DLL?
DLL
是一个包含可由多个程序同时使用的代码和数据的库。例如,在
Windows
操作系统中,Comdlg32
DLL
执行与对话框有关的常见函数。因此,每个程序都可以使用该
DLL
中包含的功能来实现“打开”对话框。这有助于促进代码重用和内存的有效使用。
通过使用
DLL,程序可以实现模块化,由相对独立的组件组成。例如,一个计帐程序可以按模块来销售。可以在运行时将各个模块加载到主程序中(如果安装了相应模块)。因为模块是彼此独立的,所以程序的加载速度更快,而且模块只在相应的功能被请求时才加载。
此外,可以更为容易地将更新应用于各个模块,而不会影响该程序的其他部分。例如,您可能具有一个工资计算程序,而税率每年都会更改。当这些更改被隔离到
DLL
中以后,您无需重新生成或安装整个程序就可以应用更新。
下表说明了
Windows
操作系统中的一些作为
DLL
实现的文件:
?
ActiveX
控件
(.ocx)
文件
ActiveX
控件的一个示例是日历控件,它使您可以从日历中选择日期。
?
控制面板
(.cpl)
文件
.cpl
文件的一个示例是位于控制面板中的项。每个项都是一个专用
DLL。
?
设备驱动程序
(.drv)
文件
设备驱动程序的一个示例是控制打印到打印机的打印机驱动程序
DLL 是什么意思?
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。
DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
DLL的全称是Dynamic Link Library, 中文叫做“动态链接文件”。在Windows操作系统中, DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。而有些DLL文件可以被许多程序共用。因此, 程序设计人员可以利用DLL文件, 使程序不至于太过巨大。但是当安装的程序越来越多, DLL文件也就会越来越多, 如果当你删除程序的时候, 没有用的DLL文件没有被删除的话, 久而久之就造成系统的负担了。
DLL是动态连接库。使用动态连接库的一些好处是:
1.多个应用程序共享代码和数据:比如Office软件的各个组成部分有相似的外观和功能,这就是通过共享动态连接库实现的。
2.在钩子程序过滤系统消息时必须使用动态连接库。
3.动态连接库以一种自然的方式将一个大的应用程序划分为几个小的模块,有利于小组内部成员的分工与合作。而且,各个模块可以独立升级。如果小组中的一个成员开发了一组实用例程,他就可以把这些例程放在一个动态连接库中,让小组的其他成员使用。
4.为了实现应用程序的国际化,往往需要使用动态连接库。使用动态连接库可以将针对某一国家、语言的信息存放在其中。对于不同的版本,使用不同的动态连接库。在使用AppWizard生成应用程序时,我们可以指定资源文件使用的语言,这就是通过提供不同的动态连接库实现的。
VC++、C++ Builder、Delphi都可以编写DLL文件。Visual Basic 5.0以上版本也可以编写一种特殊的DLL,即ActiveX DLL。
DLL不是独立运行的程序,它是某个程序的一个部分,它只能由所属的程序调用。用户不能,也不需要打开它。
DLL是什么意思啊
什么是DLL呢? DLL(动态连接库),既然是动态,那么就是有静态连接库,我想如果这么说大家 会更明白: 也许有的人在DOS下编写过程序都明白这么一件事情,我写了一个程序,里面有一 个功能就是把屏幕的内容翻转在转90°打印出来,那么我需要把整个程序写好放 到我的所有代码中,但是如果我写另外一个程序的时候也有相通的功能,我可以 调用以前的程序这个功能吗?当然是不可以的了,所以我就要重新的写一次,如 果有5个需要调用这个功能的程序,我的这个功能函数需要20K的地方,那么我的 硬盘就有80K的垃圾出现(20k*5 - 20k),这仅仅是一个函数,大家是否可以数 清除WINDOWS如果这样来写,需要多少函数吗?你看看所有的按钮、滚动条、 Listbox\Textbox\checkBox\窗体、打印对话框、颜色对话框、打开、保存、另存 、字体对话框、文件的排列、拷贝、粘贴.. 这一切的一切是不是都需要在所 有的程序中都要写出来呢?如果真的是这个样子,那么我们的windows应该按TB来 计算了(1TB=1024GB),也许你说你的硬盘很大,那么他们还要在运行的时候占 用相同大下的内容呢!所以发展出来了,动态连接库(dll)这个感念: 动态连接,就是把这些相通的功能、函数都放到一种特殊形式的windwos可执行文 件中(dll),生成一个DLL的时候,程序员需要写出,其中包含那些函数需由其 他程序来访问。这个过程叫做对函数的“导出” 创建windows程序的时候,专门的连接程序对程序的对象文件进行扫描,并生成一 个列表,列出那些调用的函数在那个DLL那个位置,指定各个函数所在位置的过程 叫做对函数的“导入”,当程序运行的时候,一旦要求用到执行文件内部没有的 函数,windows就会自动装载动态连接库,使应用程序可以访问这些函数。此时, 每个函数的地址都会解析出来,并且以动态的方式连接到程序里--这便是术语 “动态连接”的由来。 另外还有一个好处,就是当你更新你的这个函数的版本和功能的时候,静态连接 所需要做的工作是多少(假设按windwos来说他有上千个这样的函数,一共有100 多个程序来使用,那静态连接需要100000次的更新,动态连接只需要1000次) ,从而也节省了内存的空间。 动态连接库不一定是DLL扩展名的,也可以是ocx、vbx、exe、drv 等等的 大家可以发现在调用WIN32 api的时候里面都会有说明是来自于那个dll等宿主文 件的 现在我就在这里讲讲一些标准的dll用途: 看下面这个API声明: Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) s Long 看见kernel32了吗,其实这个就是kernel32.dll的名字,你可以在你的硬盘里找 到他,这就是说GetWindowsDirectory这个函数是在kernel32.dll里面,他的别名 是GetWindowsDirectoryA,()中是他的参数,有两个一个是字符型,一个是长 整型,返回值也是长整型。lpBuffer -- String,指定一个字串缓冲区, 用于装载Windows目录名。除非是根目录,否则目录中不会有一个中止用的“\” 字符nSize --- Long,lpBuffer字串的最大长度,返回值 为Long,复制 到lpBuffer的一个串的长度。如lpBuffer不够大,不能容下整个字串,就会返 回lpBuffer要求的长度。零表示失败。 这就是API声明的意义所在! DLL的说明 KERNEL32.DLL ---低级内核函数。使用他可以完成内存管理、任务管理、 资源控制等。 USER32.DLL--于windows管理有关的函数。消息、菜单、光标、计时器 、通信和其他大多数非现实函数都可以从这里找到 GDI32.DLL--图形设备接口库。于设备输出有关的函数:大多数绘图 、显示场景、图元文件、坐标及其字体函数都可以从这梨找到。 COMDLG32.DLL\LZ32.DLL\VERSION.DLL\--这都是提供一些附加函数的库,包 括通用对话框、文件压缩、版本控制的支持。 COMCTL32.DLL ---一个新的windows控件集合,比如TreeView和RichTextBox 等等,最初这个好像是为了win95而制作的,但是现在也使用与NT下 MAPI32.DLL--提供了一套电子邮件的专用函数 NETAPI32.DLL---提供了一套访问和控制网络的函数 ODBC32.DLL----(不用我再说了吧)ODBC功能的DLL之一 WINMM.DLL--(这可不是WINDOWS的MM)是多媒体控制访问函数集合 windows api正在快速发展和变化,是你我任何单个人都追赶不上的速度发展,幸 运的是我们不用掌握所有的windows API,只是掌握需要经常使用的WINDOWs api 和他的常规结构、基本感念就可以了,这亮点很重要