复习DLL
创建DLL项目,并导出函数
#ifdef DLLAPI_EXPORT
#define DLLAPI _declspec(dllexport)
#else
#define DLLAPI _declspec(dllimport)
#endif
#ifdef __cplusplus
extern"C" {
#endif
DLLAPI int fun();
#ifdef __cplusplus
}
#endif
- 将项目的类型配置为dll项目

- 导出函数的方法:
- 使用关键字来导出 :
- 在函数名前加上
_declspec(dllexport)
- 如果是c++的项目, 可以加上
extern"C"
来防止名称粉碎机制.
- 使用def文件导出
- 新建一个文本文件, 名字随意,后缀为
.def
- 在项目属性中配置该文件:

- 将要导出的函数和序号填写到文件中.
# 关键字是区分大小写的.
LIBRARY 001_dll
EXPORTS
fun2 @ 1
使用dll项目, 并调试dll
- 隐式使用
- 包含DLL项目导出函数的头文件
- 包含导入库(有三种方法):
- 使用预处理命令来包含:
#pragma comment(lib,"../debug/001_dll.lib")
- 在项目属性中添加:


- 直接将.lib文件拖到vs的源码列表中.
- 直接调用函数.
- 显式使用
- 不需要包含头文件和库文件
- 需要使用
LoadLibraryA
来加载DLL - 需要使用
GetProcAddress
来获取dll中导出的函数的地址. - 需要定义函数指针来接收函数的地址, 并调用函数.
- 调试DLL
- 将加载dll的exe的路径设置为调试的目标文件,使调试器调试这个exe。

- 直接在dll的导出函数中下断点, 等着exe调用这个导出函数, 当被调用时, 就会断下来了.