从 Python 中调用 C 函数
我们可以使用ctypes模块从Python程序中调用一个C函数。
从Python调用C函数
它包括以下步骤:
-
- 使用所需函数创建一个带有拓展名为.c的C文件
-
- 使用C编译器创建一个带有拓展名为.so的共享库文件
-
- 在Python程序中,从共享文件创建一个ctypes.CDLL实例
- 最后,使用格式{CDLL实例}.{函数名}({函数参数})调用C函数
步骤1:创建一个带有一些函数的C文件
#include <stdio.h>
int square(int i) {
return i * i;
}
我们有一个简单的C函数,会返回一个整数的平方。我把这个函数的代码保存在名为my_functions.c的文件中。
步骤2:创建共享库文件
我们可以使用以下命令将C源文件创建成共享库文件。
$ cc -fPIC -shared -o my_functions.so my_functions.c
![C File Shared Library File](https://cdn.silicloud.com/blog-img/blog/img/65648f2ea4b2f92e6c73432f/10-0.png)
第三步:从Python程序调用C函数
>>> from ctypes import *
>>> so_file = "/Users/scdev/my_functions.so"
>>> my_functions = CDLL(so_file)
>>>
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>>
>>> print(my_functions.square(10))
100
>>> print(my_functions.square(8))
64
>>>
![Calling C Function From Python](https://cdn.silicloud.com/blog-img/blog/img/65648f2ea4b2f92e6c73432f/13-0.png)
如果你修改了C程序文件,就必须重新生成共享库文件。
结论
Python的默认实现是用C语言编写的,称为CPython。所以在Python程序中使用C函数并不罕见。在本教程中,我们学习了如何在Python程序中轻松调用C函数。