1,动态链接库(DLL)
链接库目前我接触到的有两种用法, 第一种,为了了优化内存运用效率: 对于多个程序同时运行而言,要用到其他库的代码,内存中就可能有同一个库的多个副本,占用了太多内存而干的活差不多。 为了优化内存运用效率,引入了动态链接库(Dynamic Link Library),或叫共享库(Shared Object)。这样关键词就是"共享"使用动态链接库时,内存中只需要一份该库文件,其他程序要使用该库文件时,只要链接过来就行了。 第二种,为了实现类似插件化开发: 首先我们可以知道其实.dll文件和.exe文件其实殊途同归,唯一的差距就是.exe文件可以直接运行,但是.dll文件需要依赖.exe文件进行动态链接.于是开发过程中,我们可以把总体的框架和组件进行分割,.也就是说,在搭建小团队协同开发的过程中,我们可以将总体结构设计好之后,将其他小组件动态链接到我们的框架中,实现协同开发,降低工程和代码的耦合度.
2,静态链接库(LIB)
静态库就是将链接库的代码和自己编写的代码都编译链接到一块,链接到静态库的程序通常比较大,但好处是运行时依赖的库文件很少,因为目标程序自己内部集成了很多库代码。 lib文件到底是什么 所以很多人认为LIB为静态库,DLL为动态库,这理解并不错,但不全面。LIB其实分两种的 第一种, LIB是完整的静态库,里面有函数代码本身,在编译时直接将代码加入程序当中,应用程序直接使用 第二种,LIB是动态库的导出声明,只包含头部信息。里面只有函数所在的.dll文件和文件中函数位置的入口,代码由运行时加载在进程空间中的DLL提供,这一点有点类似于.h在程序的作用,主要是索引作用 值得注意的是 我发现.lib文件一般比.dll文件大小大不少,起初我以为LIB会是汇编代码,但是用vs2017自带的打开二进制文件的方式.查看之后,发现我PC上有的LIB和DLL都是二进制代码