c++动态调用dll中的函数
时间: 2023-09-07 07:15:18 浏览: 145
C#调用C++动态DLL
在 C++ 中,可以通过以下步骤动态调用 DLL 中的函数:
1. 使用 `LoadLibrary` 函数加载 DLL 文件,该函数返回一个 HMODULE 类型的句柄。
2. 使用 `GetProcAddress` 函数获取 DLL 中要调用的函数的地址,该函数返回一个 FARPROC 类型的指针。
3. 将 FARPROC 类型的指针转换为需要调用的函数类型的指针。
4. 调用获取到的函数指针,传入参数并处理返回值。
5. 使用 `FreeLibrary` 函数释放 DLL 句柄。
下面是一个简单的示例代码:
```c++
#include <windows.h>
#include <iostream>
typedef int (*AddFunc)(int, int); // 定义要调用的函数类型
int main()
{
HMODULE hDll = LoadLibrary("mydll.dll"); // 加载 DLL
if (hDll == NULL) {
std::cout << "Failed to load DLL" << std::endl;
return -1;
}
AddFunc add = (AddFunc)GetProcAddress(hDll, "add"); // 获取函数地址
if (add == NULL) {
std::cout << "Failed to get function address" << std::endl;
return -1;
}
int result = add(1, 2); // 调用函数
std::cout << "Result: " << result << std::endl;
FreeLibrary(hDll); // 释放 DLL 句柄
return 0;
}
```
注意,这里的 `AddFunc` 类型定义是根据要调用的函数的参数和返回值类型定义的,需要根据实际情况进行修改。另外,需要将编译选项中的 `unicode` 改为 `multibyte`,否则在调用 `LoadLibrary` 函数时会出现编译错误。
阅读全文