---
title: "动态库 DynamicLibrary"
description: "加载 DLL 与取导出地址"
---

---
title: 动态库 DynamicLibrary
description: 加载 DLL 与取导出地址
---

`sa` · 扩展 `CLEO` · 需 CLEO

加载 DLL、取导出地址。

写法见 [Lua](/docs/cleo/syntax) / [Redux](/docs/cleo/syntax-redux)。

## 加载模块

<Opcode id="0AA2" name="LOAD_DYNAMIC_LIBRARY" member="DynamicLibrary.Load">
把模块加载进游戏进程。成功条件为真，返回模块句柄。

```text
0AA2 LOAD_DYNAMIC_LIBRARY
in: fileName
out: handle
```

```lua
local mod = loadDynamicLibrary("kernel32.dll")
if mod then
  -- ok
end
```

```js
const handle = DynamicLibrary.Load(fileName)
```
</Opcode>

## 卸载模块

<Opcode id="0AA3" name="FREE_DYNAMIC_LIBRARY" member="DynamicLibrary.Free">
卸载已加载模块。

```text
0AA3 FREE_DYNAMIC_LIBRARY
in: self
```

```lua
freeDynamicLibrary(mod)
```

```js
DynamicLibrary.free(self)
```
</Opcode>

## 取导出地址

<Opcode id="0AA4" name="GET_DYNAMIC_LIBRARY_PROCEDURE" member="DynamicLibrary.GetProcedure">
取导出函数 / 变量地址。条件表示是否找到。

```text
0AA4 GET_DYNAMIC_LIBRARY_PROCEDURE
in: procName, self
out: address
```

```lua
local addr = getDynamicLibraryProcedure("GetTickCount", mod)
if addr then
  -- ok
end
```

```js
const address = DynamicLibrary.getProcedure(procName, self)
```
</Opcode>