C++调用DLL的两种方法
DLL代码段
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| extern "C" _declspec(dllexport) int Max(int a,int b);
extern "C" _declspec(dllexport) int Sum(int a,int b);
#include "Math.h"
int Max(int a,int b) { if(a>b) return a; else return b; }
int Sum(int a,int b) { return a+b; }
|
静态调用
- 把生成的DLL文件、DLL函数声明的头文件、DLL相关的LIB文件拷贝到工程目录
- 添加LIB文件:菜单栏 - 工程 - 设定 - 连接 输入LIB文件名
- 现有工程包含DLL头文件
- 成功,可以开始使用DLL中的函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
#include <iostream> #include <windows.h>
#include "Math.h"
using namespace std;
int main() { int a=1,b=3; cout<<Sum(a,b)<<endl; return 0; }
|
动态调用
- 把生成的DLL文件拷贝到当前工程目录
- 定义函数指针,类型必须与DLL中函数类型一致
- 加载DLL
- 获取DLL中相应函数的指针
- 使用函数
- 释放DLL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#include <iostream> #include <windows.h>
using namespace std;
typedef int (*pMax)(int a,int b);
int main() { HINSTANCE dll; pMax Max; dll = LoadLibrary("Math.dll"); Max =(pMax) GetProcAddress(dll,"Max"); cout<<Max(5,3)<<endl; FreeLibrary(dll); return 0; }
|
谢谢您的打赏,我的大英雄 ^_^
Thank you for your generosity, my big hero ^_^