python能封装so吗
时间: 2023-10-18 21:16:10 浏览: 28
是的,Python 可以封装 C/C++ 编写的动态链接库(.so 文件)。Python 提供了多种方式来封装动态链接库,以下是其中一种比较常用的方式:
1. 编写 C/C++ 动态链接库
首先需要编写 C/C++ 代码,生成动态链接库。可以使用 gcc 或者 Clang 等编译器进行编译。例如,以下是一个简单的 C++ 函数,用于计算两个数的和:
```cpp
// sum.cpp
#include <iostream>
extern "C" {
int sum(int a, int b) {
std::cout << "Calculate sum of " << a << " and " << b << std::endl;
return a + b;
}
}
```
使用以下命令编译该代码生成动态链接库:
```shell
g++ -shared -o libsum.so sum.cpp
```
2. 使用 ctypes 模块加载动态链接库
Python 提供了 ctypes 模块,用于加载和调用动态链接库中的函数。以下是一个例子,演示如何加载并调用上面生成的动态链接库中的函数:
```python
import ctypes
# 加载动态链接库
lib = ctypes.cdll.LoadLibrary('./libsum.so')
# 调用函数
result = lib.sum(1, 2)
print(result)
```
以上代码首先使用 `ctypes.cdll.LoadLibrary()` 方法加载动态链接库,然后使用 `lib.sum()` 调用动态链接库中的函数,最后输出结果。
希望对你有所帮助!