如果想导出一个全局函数,就用关键字来声明__declspec(dllexport)
,如__declspec(dllexport) int Add(int a, int b) { return a + b; }
项目需要设置:
- 取消“预编译头文件”
- 修改为/MTd编译
- 修改输出的DLL的名字
编译可得xx.dll和xx.lib,其中
xx.dll包含所有的代码编译成的指令
xx.lib包含一个列表,表明xx.dll中含有哪些符号及每个符号对应在dll中的位置。
在项目中使用DLL
使用库#pragma comment(lib, "xx.lib")
声明需要导入的项目__declspec(dllimport) int Add(int a, int b);
DLL的部署位置
程序运行时,xx.dll会被操作系统自动加载,以下是DLL能被OS找到的位置:
- 可执行文件所在目录
- 进程当前目录
- 系统目录(C:\Windows\System32等)
- Windows目录(C:\Windows)
- 环境变量PATH中的目录