动态加载dll并调用接口
动态加载dll并调用接口
[TOC]
动态加载dll并调用接口
有一个简单 cmd.cpp,内部代码如下:
1
2
3
4
5
6
#include <iostream>
#include <windows.h>
extern "C" __declspec(dllexport) int MyFunc(int a, int b)
{
return a + b;
}
现要将该 cmd.cpp 编译为一个 mydll.dll 供其他程序动态加载调用,动态加载的方式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <windows.h>
typedef int (*LoadFunc)(int, int); // 函数指针类型定义
int main()
{
HINSTANCE hDll = LoadLibraryA("mydll.dll"); // 加载 DLL
if (hDll != NULL)
{
LoadFunc Func = (LoadFunc)GetProcAddress(hDll, "MyFunc"); // 获取函数指针
if (Func != NULL)
{// 调用函数并测试输出结果
int result = Func(3, 4);
std::cout << "Result: " << result << std::endl;
}
else
{
std::cout << "Failed to get function pointer." << std::endl;
}
FreeLibrary(hDll); // 卸载 DLL
}
else
{
std::cout << "Failed to load DLL." << std::endl;
}
return 0;
}
参考12
-
来源:ChatGPT ↩︎
本文由作者按照
CC BY 4.0
进行授权