技术文章

如何用Python调用C代码?

这里介绍一种简单的方式—编译为dll或so动态库,然后再使用ctypes模块调用就行,下面我简单介绍一下实现过程,主要内容如下:

编译为dll

这种方式主要应用在Windows平台下,将C语言程序编译为一个dll动态库,然后直接使用ctypes模块加载使用就行,测试过程如下:

1.为了更好的说明问题,这里我利用VS2017编译了一个dll文件,源C代码如下,非常简单,一个相乘函数:

Python

2.编译完成后,我们在同级目录下新建一个py文件,直接使用ctpyes模块加载刚才编译好的dll文件就行,如下,非常简单:

Python

点击运行这个程序,已经成功调用C函数,并返回执行的结果,如下:

Python

编译为so

这种方式主要应用在Linux环境下,基本过程和Windows平台下差不多,也是先编译为so动态库文件,然后再使用ctypes模块加载使用就行,测试过程如下:

1.测试C程序如下,两个简单的函数,一个相加一个相乘,接着使用gcc命令将这个C文件编译为so文件,编译命令“gcc -shared -Wl,-soname,test -o test.so -fPIC test.c”:

Python

2.编译完成后,在同级目录下也新建一个py文件,也直接使用ctypes模块加载so文件使用就行,代码几乎不变,如下:

Python

直接运行这个程序,效果如下,已经成功调用C函数:

Python

至此,我们完成了利用Python调用C语言程序。总的来说,整个过程非常简单,只要你熟悉一下上面的步骤,很快就能掌握的,