概念
动态链接:lib文件一般是一些索引信息,记录了函数在DLL文件中的入口信息;dll文件在运行时加载到进程空间中,包含了要执行的代码逻辑,因此可知动态库中的被引用函数不会包含在可执行文件中,所以应用程序最后发布时,需要exe与dll文件一起发布。
静态链接:lib包含了函数代码(实际是各种cpp编译生成的obj的集合),在编译阶段直接将代码加入程序中;链接器从lib中获取所有的被引用函数,生成可执行文件。
VS中使用方法
使用动态链接:
方法一:1、properties->C/C++->General->Additonal Include Directories中加入头文件目录,引入头文件
2、引入lib库(工程属性设置或者使用#pragma comment)
3、把dll文件放到工程所在目录
方法二:将dll文件放到合适位置,然后使用LoadLibrary;合适位置指的是应用程序能找到该dll文件,寻找顺序:1、exe文件所在目录,2、工程所在目录,3、windows系统目录,4、windows目录,5、环境变量Path
使用静态链接:
1、加入包含要引入函数的头文件
2、Properties->Linker->General->Additional Library Directories中加入lib文件所在目录
3、Properties->Linker->Input->Additional Dependencies中加入lib文件名
特点比较
静态链接在程序运行时不需要再挂载动态库,程序发布时仅发布exe即可;缺点是exe文件较大,没有动态库的灵活性,新版本要更新exe。
动态链接具有灵活性,有时发布新的版本,只需更新dll文件即可,exe不需要动,而且可执行文件体积不大。