Python使用ctypes调用C
1、为什么要使用Python调用C语言
C的性能更高
2、Python调用C语言的步骤
(1)将.c文件编译为动态库文件,即.so文件
如果是Windows,可以安装MinGW,它是在Windows上可以使用的GNU工具和库的集合,包含gcc,g++等。
# 将C源码文件demo.c编译为动态库文件demo.so,在Windows、Linux上都是这个命令,亲测 gcc demo.c -shared -o demo.so
(2)使用ctype加载动态库文件,然后就可以调用C文件中的函数了
import ctypes # 或者用ctypes.cdll.LoadLibrary('./demo.so') demolib = ctypes.CDLL('./demo.so')
3、Python调用C语言实例演示
(1)编写 demo.c文件,实现一个求1-100的和的函数,代码如下:
#include <stdio.h> int add(int a, int b){ int sum = a + b; return sum; }
(2)将demo.c源码文件编译为动态库文件demo.so
gcc demo.c -shared -o demo.so
(3)编写Python文件
import ctypes # 或者用ctypes.cdll.LoadLibrary('./demo.so') demolib = ctypes.CDLL('./demo.so') def test_add(): demolib.add.argtypes = [ctypes.c_int, ctypes.c_int] demolib.add.restype = ctypes.c_int r = demolib.add(1, 2) print(f'test_add, sum: {r}') if __name__ == '__main__': test_add()
(4)执行 python3 demo.py 这里在python文件中也同样可以拿到C源码函数的返回值
E:\test> python demo.py test_add, sum: 3 E:\test>