二进制重用包括了静态库和动态库,静态库历史早与动态库,动态库相对复杂一些。动态库创建以后可以输出三种文件:头文件,导入库(.lib)和DLL。
动态库的动态链接过程有两种:装入时动态链接和运行时动态链接
装入时动态链接也称为隐式动态链接,客户应用程序在编译链接成可执行程序时需要导入头文件和导入库(.lib),在程序启动装载时加载整个动态链接库(.dll)到客户应用程序的内存地址空间;导入库是一些动态库提供给客户二进制程序在构建时使用的符号,不是动态库的实现内容。
运行时动态链接也称为显示动态链接,客户应用程序在代码中使用LoadLibrary、GetProcAddress和FreeLibrary加载、使用和释放动态库,即在执行到相应代码时(运行时)才去加载动态库的相关函数。此时项目构建不需要导入库(.lib)和引入动态库头文件,只需要dll,但是需要知道dll里面函数是啥样的。
Windows DLL和静态库的创建和使用
https://www.cnblogs.com/daocaoren/archive/2012/05/30/2526495.html
https://www.cnblogs.com/chechen/p/8676226.html
VS2019使用自己或者第三方的静态库、动态库(微软官方):
https://docs.microsoft.com/en-us/cpp/build/adding-references-in-visual-cpp-projects?view=vs-2019
VS2019创建和使用你自己的静态库(微软官网)
VS2019创建和使用你自己的动态库(微软官网)