在Python中嵌入C语言代码可以通过以下几种方式实现:
1. 使用`ctypes`模块:
加载C库:使用`ctypes.cdll.LoadLibrary`加载`.so`文件。
获取函数:使用`find_function`获取函数声明。
获取变量:使用`find_variable`获取变量。
2. 使用`cffi`模块:
创建声明文件:创建`.h`文件,包含头文件声明。
构建扩展模块:使用`cffi`生成C扩展模块。
3. 使用Python/C API:
初始化Python解释器:使用`Py_Initialize`函数。
执行Python代码:使用`PyRun_SimpleString`或`PyEval_CallObject`函数。
清理Python解释器:使用`Py_Finalize`函数。
4. 编译C代码为动态库:
使用`gcc`编译C代码为`.so`文件。
在Python代码中使用`ctypes`加载动态库并调用函数。
下面是一个简单的例子,展示如何在Python中调用C语言编写的动态库:
C语言代码(mylib.c):
include
int add_int(int a, int b) {
return a + b;
}
float add_float(float a, float b) {
return a + b;
}
编译C代码为动态库:
gcc -shared -fPIC -o libtest.so mylib.c
Python代码(pydemo.py):
from ctypes import cdll
加载动态库
lib = cdll.LoadLibrary('./libtest.so')
获取函数
add_int_func = lib.add_int
add_float_func = lib.add_float
调用函数
result_int = add_int_func(3, 4)
result_float = add_float_func(3.5, 4.5)
print(f"3 + 4 = {result_int}")
print(f"3.5 + 4.5 = {result_float}")
执行Python代码:
python pydemo.py
输出结果:
3 + 4 = 7
3.5 + 4.5 = 8.0