博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态链接库(lib)、动态链接库(dll)与动态链接库的导入库(lib)
阅读量:4602 次
发布时间:2019-06-09

本文共 1108 字,大约阅读时间需要 3 分钟。

静态链接库与动态链接库相对应。动态链接库的导入库不同于以上两种库。
1.静态链接库(lib)
    
程序编译一般需经编辑、编译、连接、加载和运行几个步骤。在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件(lib),
这种LIB中有函数的实现代码。在静态编译时,它是将LIB中的代码加入目标模块(EXE或者DLL)文件中,所以链接好了之后,LIB文件就没有用了。
 
2.动态链接库(dll)
    动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。
动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon,它和可执行文件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行,
而应由Windows应用程序直接或间接调用。 
     动态链接是相对于静态链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,
这样就浪费了宝贵的内存资源。而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。
仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,
根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。  
 
3.动态链接库的导入库(lib)
    
目前以lib后缀的库有两种,一种为
(Static Library,以下简称“静态库”),另一种为
(DLL,以下简称“动态库”)的导入库(Import Library,以下简称“导入库”)。
静态库上面有介绍,不再重复。
    
动态库一般会有对应的导入库,方便程序
载入
,否则你可能就需要自己LoadLibrary调入
,然后再手工GetProcAddress获得对应函数了。
有了导入库,你只需要链接导入库后按照头文件函数接口的声明调用函数就可以了。
    
当DLL被链接时,链接程序要查找关于输出
,函数,或C++类的信息,并自动生成一个lib文件。该lib文件包含一个DLL输出的符号列表。
当可执行文件生成之后,lib文件就没什么用了,但是dll文件必须存在。

附件列表

 

转载于:https://www.cnblogs.com/fengkang1008/p/4649563.html

你可能感兴趣的文章
转Python学习(三)
查看>>
微信支付遇到的坑们
查看>>
wpf *和auto的区别
查看>>
[转]如何成为优秀的程序员
查看>>
unity3d 幻灯片效果实现
查看>>
AFNetworking 进行网络监测
查看>>
iOS获取状态栏和导航栏尺寸(宽度和高度)
查看>>
极光推送
查看>>
openTK学习
查看>>
根据角色获取用户组
查看>>
HTML5之pushstate、popstate操作history,无刷新改变当前url
查看>>
2048游戏:(一)运行效果
查看>>
[转载] 数据库的垂直切分和水平切分
查看>>
ReentrantLock可重入锁的使用场景
查看>>
LOJ#6277. 数列分块入门 1
查看>>
frame外弹出,刷新父页面
查看>>
爬虫一
查看>>
Linux 网络工具详解之 ip tuntap 和 tunctl 创建 tap/tun 设备
查看>>
JavaScript之Array/数组小结
查看>>
证券概念
查看>>