静态链接库与动态链接库的使用
自用,有错误请多多斧正。
静态链接库
步骤:
- 生成静态链接库文件
- 头文件中声明,cpp中实现
- 将.lib,.h放入所需工程目录下
- 引用头文件,#pragma comment(lib,“xxx.lib”);工程–设置–链接–对象/库模块中添加lib
动态链接库
步骤:
1.创建动态链接库文件
头文件中声明,cpp中实现
声明格式:extern "C" _declspec(dllexport) + 调用约定 返回类型 函数名 参数列表
调用约定可默认 _stdcall
例:extern "C" _declspec(dllexport) _stdcall int Calculate(int Na , int Nb)
函数名函数编号更改:
使用.def文件
EXPORTS
ep1:函数名 @编号
ep2:函数名 @编号 NONAME(只是用编号,可以隐藏函数名)
2.使用
定义函数指针
typedef 返回值类型(调用约定* 名字)(类型, 类型);
ep:typedef char(__stdcall* Calculate)(char, char);
加载dll
HINSTANCE hModule=LoadLibrary("DLLNAME.dll");
获取调用函数
ep:Calculate rcal = (Calculate)GetProAddress(hModule,"calculate");
int refer = rcal(1 , 2);
结束
FreeLibrary(hMoudle);
对于动态库获取函数地址较麻烦,可以使用动态库的lib。
- 先将.lib和.dll放入工程根目录
- 将lib引入#pragma comment(lib,“xxx.lib”)
- 声明函数__declspec(dllimport)__stdcall char Calculate(char a ,char b );