可以写一个完整的例子吗
时间: 2023-08-29 10:04:33 浏览: 62
好的,以下是一个完整的例子,假设 `my_dll.dll` 文件中包含了 `add` 和 `subtract` 两个函数,用来分别计算两个整数的和与差:
首先,创建一个 `my_dll.def` 文件,定义 `add` 和 `subtract` 两个导出函数:
```
LIBRARY "my_dll"
EXPORTS
add
subtract
```
然后,创建一个 `my_dll.c` 文件,实现 `add` 和 `subtract` 函数:
```
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
```
接下来,使用 Visual Studio 编译生成 `my_dll.dll` 文件。
最后,可以创建一个 Python 脚本来调用 `my_dll.dll` 文件中的 `add` 和 `subtract` 函数:
```
import ctypes
# 加载动态链接库
my_dll = ctypes.CDLL("my_dll.dll")
# 获取函数句柄
add = my_dll.add
subtract = my_dll.subtract
# 调用函数
result1 = add(1, 2)
result2 = subtract(3, 4)
# 输出结果
print(result1) # 3
print(result2) # -1
```
这段代码中,首先使用 `ctypes` 模块的 `CDLL` 函数加载 `my_dll.dll` 文件,然后使用 `getattr` 函数获取 `add` 和 `subtract` 函数的句柄。最后,直接调用句柄对象并传递必要的参数即可。
输出结果为:
```
3
-1
```