动态连接库(DLL- Dynamic Link Library)
链接库是个很不错的想法,直接以二进制形式供用户使用,而免除用户维护代码的麻烦,或者避免用户看到实现代码.
分类
Windows系统上链接库分为2种, 静态链接.lib 和动态链接.dll ,
而动态链接库按载入方式又分2种, Dynamic Load 和 Static load
链接库类型 | 载入方式 | 代码分布 | 用户需要的二进制文件 |
---|---|---|---|
static link library | 无需载入 | .lib包含实际代码, link时合并进用户程序 | .lib |
dynamic link libray | static load, 启动时隐式载入 | .lib包含接口定义, 代码独立为.dll | .lib .dll |
dynamic link libray | dynamic load, 使用时通过系统函数显式载入 | .lib包含接口定义, 代码独立为.dll | .dll |
这里主要谈 Windows平台下的 static load dynamic link library.
流程
生成DLL和使用DLL的过程分三个阶段:
1. 编译阶段 (头文件 .h)
dll工程中在头文件中对导出内容(function, class, type, object, variable)进行定义.
而用户编译时需要引入这个头文件才能在代码中使用dll导出的定义.
2. 链接阶段 (库文件 .lib)
dll工程在link阶段会生成.lib
用户link时需要 这个.lib