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工程里暴露出来。

最新文章

  1. twitter.common.concurrent deadline and defer
  2. 在C#中如何使用资源的方法
  3. iOS - Swift Dictionary 字典
  4. container_of宏定义分析---linux内核
  5. JS插件excanvas的使用方法
  6. BZOJ3451: Tyvj1953 Normal
  7. light oj 1148 - Mad Counting
  8. openssl使用+Demo
  9. maven相关的学习资料
  10. 保留键的情况下取字典中最大的值(max\zip函数的联合使用)
  11. tensorflow Pipeline 之TextLineReader 和decode_csv多分割替代方案
  12. python 通过 http、dns、icmp判断网络状态
  13. yii2部署nginx
  14. 使用PhoneGap搭建一个山寨京东APP(转)
  15. 不能将“this”指针从“const SqQueue<ElementType>”转换为“SqQueue<ElementType> &
  16. 查看 js对象
  17. asp.net mvc文件下载
  18. 实现编程时Vim自动导入相应模板
  19. poj 2017 Speed Limit
  20. ABP 学习系列 - 目录

热门文章

  1. Ubuntu上配置Eclipse:安装CDT【转】
  2. codeforces 688C C. NP-Hard Problem(bfs判断奇数长度环)
  3. 【转载】HTML5自定义data属性
  4. Tomcat cluster and session
  5. ArcGIS for JavaScript 3.9 本机IIS部署
  6. Ubuntu 14.04.1 配置 Android 源码开发环境(jdk版本切换)(转载)
  7. ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(二)数据库初始化、基本登录页面以及授权逻辑的建立
  8. E20170519-ts
  9. bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线【二分+spfa】
  10. oracle ORA-01704: string literal too long问题分析