dll、lib(动态链接库、静态链接库)的区别
2024-09-03 17:33:55
1.dll:dynamic link library;
lib:static link library。
2.windows系统中,许多app并不是仅由一个完整的exe构成,而是按功能分成了若干部分,由exe、dll、lib等组成,这些里面包含了函数的实现过程等。
3.lib编译时用到,用一下,链接完了就没事了;dll运行时用到,可能一直都在用。
4.如果只有lib,那么这个lib文件是静态编译出来的,索引和实现都在其中。使用静态编译的lib文件,在运行程序时不需要再挂dll,缺点是导致应用程序比较大,而且失去了dll的灵活性,发布新版本时要发布新的应用程序才行。
5.如果dll、lib文件都有,那么lib一般是一些索引信息,记录了dll中函数的入口和位置,dll中是函数的具体内容。动态链接的情况下,有两个文件:一个是LIB文件,一个是DLL文件。LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中相应函数代码的地址,从而节省了内存资源。DLL和LIB文件必须随应用程序一起发行,否则应用程序会产生错误。
6.如果只用dll,不想用lib文件或者没有lib文件,可以用WIN32 API函数LoadLibrary、GetProcAddress装载。
7.静态lib中,一个lib文件实际上是任意个obj文件的集合,obj文件是cpp文件编译生成的。在编译这种静态库工程时,根本不会遇到链接错误;即使有错,也只会在使用这个lib的EXT文件或者DLL工程里暴露出来。
最新文章
- twitter.common.concurrent deadline and defer
- 在C#中如何使用资源的方法
- iOS - Swift Dictionary		字典
- container_of宏定义分析---linux内核
- JS插件excanvas的使用方法
- BZOJ3451: Tyvj1953 Normal
- light oj 1148 - Mad Counting
- openssl使用+Demo
- maven相关的学习资料
- 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
- tensorflow Pipeline 之TextLineReader 和decode_csv多分割替代方案
- python 通过 http、dns、icmp判断网络状态
- yii2部署nginx
- 使用PhoneGap搭建一个山寨京东APP(转)
- 不能将“this”指针从“const SqQueue<;ElementType>;”转换为“SqQueue<;ElementType>; &;
- 查看 js对象
- asp.net mvc文件下载
- 实现编程时Vim自动导入相应模板
- poj 2017 Speed Limit
- ABP 学习系列 - 目录
热门文章
- Ubuntu上配置Eclipse:安装CDT【转】
- codeforces 688C C. NP-Hard Problem(bfs判断奇数长度环)
- 【转载】HTML5自定义data属性
- Tomcat cluster and session
- ArcGIS for JavaScript 3.9 本机IIS部署
- Ubuntu 14.04.1 配置 Android 源码开发环境(jdk版本切换)(转载)
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(二)数据库初始化、基本登录页面以及授权逻辑的建立
- E20170519-ts
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线【二分+spfa】
- oracle ORA-01704: string literal too long问题分析