c++ loadlibrary
时间: 2023-07-19 08:52:31 浏览: 139
c++图书馆程序
C++ 中可以使用 `LoadLibrary` 函数加载动态链接库。该函数在 Windows 平台上可用,可以在程序运行时加载外部 DLL 文件并获取其中导出的函数地址,从而实现动态链接库的调用。
使用 `LoadLibrary` 函数需要包含 `windows.h` 头文件,函数原型为:
```c++
HINSTANCE LoadLibrary(LPCTSTR lpFileName);
```
其中,`HINSTANCE` 类型为句柄类型,表示加载的库的实例句柄。`lpFileName` 参数为库文件的路径。
调用 `LoadLibrary` 函数后,如果加载成功,会返回一个非空的句柄,可以使用 `GetProcAddress` 函数获取加载库中导出函数的地址,从而进行调用。使用完毕后,需要通过 `FreeLibrary` 函数释放加载的库。
```c++
FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName);
```
其中,`hModule` 参数为 `LoadLibrary` 函数返回的句柄,`lpProcName` 参数为导出函数的名称。
示例代码:
```c++
#include <windows.h>
#include <iostream>
int main() {
HINSTANCE hDll = LoadLibrary("example.dll");
if (hDll == NULL) {
std::cout << "Failed to load DLL" << std::endl;
return -1;
}
int (*add)(int, int) = (int (*)(int, int))GetProcAddress(hDll, "add");
if (add == NULL) {
std::cout << "Failed to get function address" << std::endl;
FreeLibrary(hDll);
return -1;
}
std::cout << add(1, 2) << std::endl;
FreeLibrary(hDll);
return 0;
}
```
其中,`example.dll` 为导出了 `add` 函数的动态链接库。
阅读全文