c++ loadlibrary
时间: 2023-09-12 14:03:04 浏览: 38
在 C++ 中,使用 `LoadLibrary` 函数可以动态加载一个动态链接库(DLL),该函数属于 Windows API,其定义在 `Windows.h` 头文件中。以下是 `LoadLibrary` 函数的原型:
```c++
HMODULE LoadLibrary(
LPCTSTR lpFileName
);
```
其中,`lpFileName` 参数是一个指向包含 DLL 文件名的 NULL 结尾字符串的指针。
`LoadLibrary` 函数返回一个 `HMODULE` 类型的句柄,该句柄用于后续操作,比如使用 `GetProcAddress` 函数获取动态链接库中的函数地址。如果加载 DLL 失败,则返回值为 `NULL`。
以下是一个简单的示例代码,演示了如何使用 `LoadLibrary` 函数加载一个 DLL 并调用其中的函数:
```c++
#include <Windows.h>
#include <iostream>
typedef int (*MyFunc)(int, int); // 定义函数指针类型
int main() {
HMODULE hDll = LoadLibrary("mydll.dll"); // 加载 DLL
if (hDll == NULL) {
std::cerr << "Failed to load DLL!" << std::endl;
return 1;
}
MyFunc add = (MyFunc)GetProcAddress(hDll, "add"); // 获取函数地址
if (add == NULL) {
std::cerr << "Failed to get function address!" << std::endl;
FreeLibrary(hDll);
return 1;
}
int result = add(3, 4); // 调用函数
std::cout << "Result: " << result << std::endl;
FreeLibrary(hDll); // 卸载 DLL
return 0;
}
```
其中,假设 `mydll.dll` 文件中有一个名为 `add` 的函数,可以将两个整数相加并返回结果。在代码中,首先使用 `LoadLibrary` 函数加载 DLL,然后使用 `GetProcAddress` 函数获取 `add` 函数的地址,最后调用该函数并输出结果。注意,在调用完毕后应该使用 `FreeLibrary` 函数卸载 DLL。