从 Python 中调用 C 函数

我们可以使用ctypes模块从Python程序中调用一个C函数。

从Python调用C函数

它包括以下步骤:

    1. 使用所需函数创建一个带有拓展名为.c的C文件

 

    1. 使用C编译器创建一个带有拓展名为.so的共享库文件

 

    1. 在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

第三步:从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

如果你修改了C程序文件,就必须重新生成共享库文件。

结论

Python的默认实现是用C语言编写的,称为CPython。所以在Python程序中使用C函数并不罕见。在本教程中,我们学习了如何在Python程序中轻松调用C函数。

发表回复 0

Your email address will not be published. Required fields are marked *


广告
将在 10 秒后关闭
bannerAds