Windows动态库和静态库
Windows动态库和静态库
库:二进制文件
静态库
.lib, 库文件不是可执行程序
在链接阶段, 将代码完整的拷贝到可执行程序中
使用静态库需要导入头文件和库
#pragma comment(lib, "路径") // 导入库
修改库需要重新生成整个应用程序
动态库
1. 隐式加载
将所有函数都加载
.dll和.lib(.lib在这里是引入库, 标记了.dll中函数的具体位置)
在链接阶段, 将引入库拷贝到可执行程序中
导出方式
1. 加入导出符号
具体设置哪些函数可以供程序使用
_declspec(dllexport) int MyAdd(int a, int b);
2. 添加模块定义文件
LIBRARY "项目名称" EXPORTS MyAdd @1 MySub @2
都会生成.dll和.lib
#pragma comment(lib, "引入库路径")
一般将.dll放入.exe同级目录下或系统目录下
.dll是在运行阶段通过.lib加载的
当引入库改变(增加了可以使用的新功能等), 需要重新加载整个.exe
2. 显式运行时加载
更灵活, 可以指定需要用哪个函数
1. 加载库
LoadLibrary(); // 加载库
2. 获取函数地址
GetProcAddress();
3. 卸载库
FreeLibrary(); //

浙公网安备 33010602011771号