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(); // 

 

posted @ 2020-08-17 14:19  x_Aaron  阅读(228)  评论(0)    收藏  举报