问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

什么是DLL(dynamic link library)技术阿?

发布网友 发布时间:2022-05-14 23:54

我来回答

2个回答

热心网友 时间:2023-11-09 19:23

什么是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)

As 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

和他的常规结构、基本感念就可以了,这亮点很重要

热心网友 时间:2023-11-09 19:23

动态链接库是一个能够被应用程序和其它的DLL调用的过程和函数的集合体,它里面包含的是公共代码或资源。由于DLL代码使用了内存共享技术,在某些地方windows也给了DLL一些更高的权限,因而DLL中可以实现一些一般程序所不能实现的功能,如实现windows的HOOK、ISAPI等。

参考资料:http://dev.yesky.com/407/3075907.shtml

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
锡纸能用在微波炉里保温吗? 锡纸为什么会保温 锡纸为什么能保温 锡纸可以保温多久 锡纸能保温多久 锡纸可以保温多久? 父母情商越高,为什么子女成绩越差 笔记本电脑怎么联机设置两台电脑怎么联机共享 联想s4700u盘装系统 smart精灵#1冒烟有焦味!车主想要退车为何阻力重重? 三国志加强无限版手游安卓游戏如何下载 动态链接库是什么? 请问DLL文件是什么文件啊?什么叫做动态链接库啊? 什么是动态链接库 东江有机鱼防伪标签哪里有买 兰州哪里又买防伪标签的? 中信哪些卡网付(支付宝,微信,银联)有积分 中信易卡的网付卡,通过支付宝微信消费有没有积分 中信网付卡还款 我的联想笔记本以前安装微软正版Win10都能自动联网激活,前几天我下了 我的笔记本是联想拯救者 做了个系统 之前是win10家庭版的 做了之后却 新买联想笔记本电脑Win10系统激活失败出现错误代码0X8000FFF 联想拯救者R7000是否自带W10系统? 我从装了系统还能还原到原来的位置吗 鹿泉在哪办电气焊操作证 应届生不签三方协议,毕业后直接签劳动合同,这样会有什么不好后果吗 18年应届毕业生准备二战考研,这期间我签署劳务合同会不会影响我考试? 大学毕业生直接和单位签无固定期限劳动合同好吗? 应届生可以不用三方协议直接签劳动合同吗?有什么不好的后果吗? 应届生还未拿到毕业证时,签订劳动合同有郊吗? 联想A2109平板电脑,说明上有原笔迹手写功能,如何实现原笔迹手写 成汐瑶的名字含义是什么? 女主叫林沫沫的重生文 请高人给我孩子起名。 有一首歌 前面是: 恩啊~~ 恩啊~~~ 歌词只有“恩啊啊啊,恩啊啊啊......”,近似古典歌 圆周率的精确数值,精确到小数点后100位 属羊取名可以用喻字吗 属羊三胞胎起名大全 淘宝卖家申请新店铺一般多久会出现二次认证 违建交完罚款是不是不用拆除 求个烘焙店名字 违建几年的房子不拆 小区充电桩新法律法规 开一家火锅烧烤食材店前景怎么样? 小弟想开个烘焙坊,特求店名一个,在2至4个字之间,最好欧式一点,名字里带木(偏旁部首都行) 小区物业不让按充电桩,法律规定怎么处理 请问做火锅食材超市的发展前景好吗? 带彤字的蛋糕店名,烘焙店。 在县城开一家火锅食材店怎么样? 开一家万家相逢火锅烧烤食材超市前景怎么样?
  • 焦点

最新推荐

猜你喜欢

热门推荐