C++ Freelibrary
时间: 2023-07-03 19:15:19 浏览: 85
在C++中,`Freelibrary`函数是Windows API中的一个函数,用于释放动态链接库(DLL)的句柄(handle)。具体而言,`Freelibrary`函数是用来卸载动态链接库的,它的原型如下:
```c++
BOOL FreeLibrary(
HMODULE hLibModule
);
```
其中,`hLibModule`参数是一个指向动态链接库的句柄,它是在调用`LoadLibrary`函数时返回的。当不再需要使用该动态链接库时,可以调用`FreeLibrary`函数来卸载它,以释放相应的资源。
需要注意的是,`Freelibrary`函数只会卸载动态链接库,而不会删除该库文件本身。如果需要删除该文件,需要使用操作系统提供的文件操作函数,如`DeleteFile`等。
相关问题
c++ 加载动态库
在C++中,可以使用动态链接库(Dynamic Link Library,DLL)来实现动态加载和卸载代码,从而实现更灵活的程序设计和扩展功能。
以下是加载动态库的基本步骤:
1. 使用 `LoadLibrary()` 函数加载动态库,该函数返回一个句柄(`HMODULE`)。
```c++
#include <windows.h>
HMODULE hDll = LoadLibrary(TEXT("MyDll.dll"));
```
2. 如果加载成功,可以使用 `GetProcAddress()` 函数获取动态库中导出函数的地址。
```c++
#include <windows.h>
typedef int (*PFunc)(int, int); // 定义函数指针类型
PFunc pAdd = (PFunc)GetProcAddress(hDll, "Add"); // 获取函数地址
```
3. 调用导出函数。
```c++
int result = pAdd(1, 2); // 调用函数
```
4. 使用 `FreeLibrary()` 函数释放动态库。
```c++
FreeLibrary(hDll); // 释放动态库
```
需要注意的是,动态库中的函数必须使用 `__declspec(dllexport)` 关键字进行导出,例如:
```c++
__declspec(dllexport) int Add(int a, int b)
{
return a + b;
}
```
C++ 加载动态库
在C++中,可以使用动态链接库(Dynamic Link Library,DLL)来实现动态加载和卸载代码,从而实现更灵活的程序设计和扩展功能。
以下是加载动态库的基本步骤:
1. 使用 `LoadLibrary()` 函数加载动态库,该函数返回一个句柄(`HMODULE`)。
```c++
#include <windows.h>
HMODULE hDll = LoadLibrary(TEXT("MyDll.dll"));
```
2. 如果加载成功,可以使用 `GetProcAddress()` 函数获取动态库中导出函数的地址。
```c++
#include <windows.h>
typedef int (*PFunc)(int, int); // 定义函数指针类型
PFunc pAdd = (PFunc)GetProcAddress(hDll, "Add"); // 获取函数地址
```
3. 调用导出函数。
```c++
int result = pAdd(1, 2); // 调用函数
```
4. 使用 `FreeLibrary()` 函数释放动态库。
```c++
FreeLibrary(hDll); // 释放动态库
```
需要注意的是,动态库中的函数必须使用 `__declspec(dllexport)` 关键字进行导出,例如:
```c++
__declspec(dllexport) int Add(int a, int b)
{
return a + b;
}
```