动态链接库的作用

请问一下,动态链接库有什么作用呀?请高手指教一下,先谢谢了。... 请问一下,动态链接库有什么作用呀?请高手指教一下,先谢谢了。 展开
 我来答
长沙智能家居服务中心
2009-04-27 · TA获得超过101个赞
知道小有建树答主
回答量:143
采纳率:0%
帮助的人:0
展开全部
DLL为动态链接库文件

动态链接库的概念

在DOS环境下编过程序的读者一定知道静态库的含义——程序员将实现各种功能的代码写成一个个子程序(函数),编译成obj文件后,将多个obj文件组合成一个lib文件,当程序中要用到这些函数的时候,只需要指定函数名称,编译器就可以从库中抽出对应的子程序代码插入到可执行文件中去,这样就可以不必一遍遍地重写相同的功能代码。这种链接方法就是静态链接,

静态链接的缺点显而易见,如果有多个程序用到库中的同样函数,那么所有这些可执行文件中都会包含一份同样的代码,对于每个程序几乎必须使用的一些函数来说,如果硬盘上有一万个程序用到这个函数,那么就存在一万份相同的代码,这显然是很浪费空间的。静态链接的另外一个缺点是:如果某个函数因为发现有错或更新算法等种种原因需要升级版本时,必须把所有用到此函数的可执行文件都找回来重新编译一遍,遗漏的程序中存在的还是旧版本的代码。

DOS操作系统是单任务的操作系统,每时每刻只能有一个程序在运行,所以使用静态链接浪费的空间仅表现在磁盘空间的浪费上;而Windows操作系统是多任务的,内存中会同时装入多个程序的代码,如果使用静态链接的话,意味着有多份相同的代码被装入内存,这种浪费代价将是更昂贵的。

Windows的解决办法就是使用动态链接库,动态链接库从表面上看也是提供了一大堆通用的函数,也可以被多个程序使用,但它和静态库的使用上有很多的不同点。

静态库仅在编译的时候使用,编译完成后,可执行文件就可以脱离库文件单独使用了,而动态链接库中的代码在程序编译的时候并不会被插入到可执行文件中,在程序运行的时候才将整个库的代码调入内存,所以称为“动态链接”。如果有多个程序用到同一个动态链接库,Windows在物理内存中只保留一份库的代码,仅通过分页机制将这份代码映射到不同进程的地址空间中,这样不管有多少程序在使用一个库,库代码实际占用的物理内存永远只有一份。当然,这时候库使用的数据段还是会被映射到不同的物理内存中,多少个程序在使用动态链接库就会有多少份数据段。DLL的工作方式在图1.6中就已经有所演示了。

当应用程序装载动态链接库的时候,程序中仅包括库的名称和函数的名称,这些信息是动态寻找对应函数所必须的,程序在编译和链接的时候必须插入这些定位信息,定位信息取自导入库文件,这一点在前面的编程中已经多次涉及。

动态链接库的缩写为DLL,大部分动态链接库是以扩展名为dll的文件形式存在的,但并不是只有dll扩展名的文件才是动态链接库,系统中的某些exe文件、字体文件(*.fon)、一些驱动程序(*.drv)、各种控件(*.ocx)和输入法模块(*.ime)等都是动态链接库。实际上,系统中大部分包含公用代码的模块——不管扩展名是什么——都有可能是动态链接库。

一个文件是否是动态链接库取决于它的文件结构,动态链接库文件和可执行文件同样使用标准的PE文件格式,仅文件头中的属性位不同而已,所以exe文件的一些特征也存在于动态链接库中,比如在动态链接库中也可以定义并使用各种资源,可以导入并使用其他动态链接库中的函数等。

有一个最重要的概念一定要牢记:动态链接库是被映射到其他应用程序的地址空间中执行的,它和应用程序可以看成是“一体”的,动态链接库可以使用应用程序的资源,它所拥有的资源也可以被应用程序使用,它的任何操作都是代表应用程序进行的,当动态链接库进行打开文件、分配内存和创建窗口等操作后,这些文件、内存和窗口都是为应用程序所拥有的。

简单的说,DLL就是不能自己执行的程序
Storm代理
2023-07-25 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP... 点击进入详情页
本回答由Storm代理提供
宝燕伍依霜
2020-05-17 · TA获得超过3677个赞
知道大有可为答主
回答量:3098
采纳率:27%
帮助的人:169万
展开全部
就是一个DLL库,里面都是函数。
比方说一个程序要算2的100次方,正好库里有这个函数,它就直接调用。
如果没有,这个程序就不能运行。道理是这个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
he0216
2009-04-26 · TA获得超过104个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:132万
展开全部
动态链接库:是把程序代码中会使用的函数编译成机器码,不过是保存在*.dll文件中。另外在编译时,不会把函数的机器码复制一份到可执行文件中。编译器只会在*.exe的执行文件里,说明所要调用的函数放在哪一个*.dll文件。程序执行使用到这些函数时,操作系统会把dll文件中的函数拿出来给执行文件使用
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
仵野夕溪
2019-07-28 · TA获得超过3628个赞
知道大有可为答主
回答量:3046
采纳率:32%
帮助的人:477万
展开全部
动态链接库(DLL,即
Dynamic-Link
Library)是可执行的模块,但它没有自己的堆栈,必须在调用动态链接库函数的程序
环境下运行。动态链接库不仅可以作为一个运行模块,包括函数代码,而且可以包含程序以外的任何数据或资源(位图、图标
等等)。动态链接库就是给应用程序提供函数或者资源。
动态链接与静态链接是相对立的。静态链接的时候,可执行程序内包含了所访问的函数的代码,可执行程序占用的空间较
大;但运行时,不需要其他模块支持,从而速度相对较快。动态链接的可执行程序中不包含动态访问的函数代码,仅仅包含对
它的参考,运行时需要其他模块(DLL)的支持,速度相对较慢。
动态链接库是Windows的一种极其重要的技术。它使得开发人员可以通过编写动态链接库,方便灵活的实现大型程序的开
发,按自己的意愿对操作系统进行扩展。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式