在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):

includeint 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_intadd_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 = 73.5 + 4.5 = 8.0
