Python3 调用C语言代码
开发环境
1 | centos7+python3.6 |
备注
1 | Python中的ctypes模块可能是Python调用C方法中最简单的一种。 |
准备文件
1.准备C语言程序,保存为add.c
1 |
|
2.编译成so库
输入命令即可,会出现一个.so文件
1 | gcc -shared -Wl,-soname,adder -o adder.so -fPIC add.c |
3.准备python代码,保存为python-c.py
1 | import ctypes |
4.执行
1 | python3 python-c.py |
执行结果如下
1 | 4 + 5 = 9 |
5.特殊说明
- 在Python文件中,一开始先导入ctypes模块,然后使用cdll.LoadLibrary函数来加载我们创建的库文件。这样我们就可以通过变量adder来使用C类库中的函数了。当adder.add_int()被调用时,内部将发起一个对C函数add_int的调用。ctypes接口允许我们在调用C函数时使用原生Python中默认的字符串型和整型。
- 而对于其他类似布尔型和浮点型这样的类型,必须要使用正确的ctype类型才可以。如向adder.add_float()函数传参时, 我们要先将Python中的十进制值转化为c_float类型,然后才能传送给C函数。这种方法虽然简单,清晰,但是却很受限。例如,并不能在C中对对象进行操作。