动态链接库dll

本文详细解释了DLL(动态链接库)与静态库之间的主要区别。通过对比两种库的加载方式,阐述了DLL如何实现代码和数据的共享,并讨论了使用DLL的优点与潜在问题。

DLL(Dynamic Link library):动态链接库,库中包含了由多个程序同时使用的代码和数据。

之所以使用DLL,从下面一张图就能大致看出。

DDL有助于多个程序共享代码和数据。

而我们传统所说的库,如<stdio.h>它们属于静态库:函数和数据被编译进一个二进制文件(通常扩展名为.LIB)。在使用静态库的情况下,编译链接可执行文件时,链接器从库中复制这些函数和数据并把他们和应用程序的其他模块组合起来创建最终的可执行文件(.EXE文件)。

 

而动态库则不需要在编译过程中复制所有的内容,让每个程序一人一份。

在使用动态库的时候,往往提供两个文件:一个引入库和一个DLL。引入库包含被DLL导出的函数和变量的符号名,DLL包含实际的函数和数据。在编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不复制到可执行文件中,在运行的时候,再去加载DLL,访问DLL中的导出函数。

 

当然,使用DLL有很多优点,但缺点如版本不兼容,同时访问造成的冲突等等。

对于版本不兼容的问题,我们的解决方法是:在于编译程序时,由VS生成一个manifest文件,指明当前应用程序所使用的动态链接库版本号;发布程序时需同时发布该manifest文件。运行调用时,manifest会指定我们所用的动态链接库的版本。

转载于:https://www.cnblogs.com/zhazhalovecoding/p/6098941.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值