术语:
- 动态链接库
- 静态链接库
- 动态链接
- 静态链接
其中动态链接库和静态链接库表示库本身文件,而动态链接和静态链接表示程序对库本身文件的链接方式;
模块化编程经历了“无库->静态库->动态库”的阶段
动态链接库和静态链接库都是一种代码仓库,为外界提供变量、函数或类,所以在一个程序中,不同的模块部分可以用库文件的形式来实现,从而只提供给外界相应的接口即可。
动态链接库的文件命名后缀为dll,静态链接库的文件命名后缀为lib; 或许有些同志就会疑问:在使用动态链接库的时候也有lib文件,其实该lib文件只是dll的导出描述,即导出库。
链接方式的区别:
静态链接方式为把库文件的东西拷贝到目的程序中,即在链接时就完成该操作;从静态链接方式的行为上看,其最终适用于静态链接库上。
动态链接方式即在运行时动态加载库文件;从动态链接方式的行为上看,其最终适用于动态链接库上,其调用方式为运行LoadLibrary函数;在程序中,所有的动态链接库的调用都是最终使用LoadLibrary函数,这时或许又有同志疑问:那么在使用动态链接库的导出库(lib)时,没有使用LoadLibrary 函数啊??这里牵涉到两个概念:即动态链接库的显式加载和隐式加载,通过在程序代码里调用LoadLibrary函数的方式即为显示加载方式,而通过使用导出库的方式即为隐式加载的方式,个人认为在隐式加载里最终会通过LoadLibrary函数来进行动态链接库的加载,那么隐式加载方式中的LoadLibrary函数在哪了?其实就在动态链接库的导出库里。