简介
lib(静态库,library):lib分为两种,一种是通常意义上的静态库,里面是函数实现代码;还有一种是导出库,配合dll使用,实现隐式调用。两者都是用于静态链接,在生成目标模块后,lib文件就没有用了。
dll(动态库,dynamic link library):dll用于动态编译,调用dll的程序本身只有导出函数的声明,而将实现过程放到dll中,这样dll就可以提供给多个程序使用,大大减少了程序体积,是实现代码复用的重要手段。编译的时候不需要dll,运行时却必不可少。
总之:lib相当于代替cpp文件编译,而dll相当于把cpp文件放到程序外面。
库 | lib | dll |
---|---|---|
文件后缀 | .lib | .dll |
类型 | 静态库 | 动态链接库 |
何时依赖 | 编译时依赖 | 运行时依赖 |
使用方式 | 程序编译时链接到目标模块中 | 显示调用或隐式调用,要求运行时能找到 |
生成
生成lib的目的是为了将.h文件和.lib文件提供给其他的项目使用,如一些第三方库;
生成dll则是提供一些导出函数让其它项目显示调用(只需要dll文件),或者隐式调用(