Python 把C语言的程序编译成.so动态文件并且在Python程序中引用so动态函数

凌顺实验室(lingshunlab.com)把C的程序编译成动态库文件,在Linux中是使用so动态库文件,在window中是使用dll动态库文件,并且不同的Linux系统中不一定相互通用,所以最好是在使用的Linux系统中重新编译一次so动态库文件。

1,首先准备好C语言的程序文件

准备好2个文件,程序文件和头文件

  • xxxx.c
  • xxxx.h

2,使用以下命令,即可C文件编译为so文件,在Python中可引用的动态函数。

打开到C程序的目录下,运行以下命令:

gcc -shared -Wl,-soname,test -o test.so -fPIC test.c
  • test.so 为编译生成的so文件,大多情况是以lib开头的命名规则。
  • test.c 为需要编译的C语言程序

运行命令后,目录下会生成一个test.so文件,这就是在Python程序中可以调用的.so动态文件

3,在Python中引用

使用ctypes模块加载使用就行

import os
from ctypes import *
import _ctypes
import ctypes

# 加载so动态库
so = ctypes.CDLL('./test.so') # 这里建议使用绝对路径

so.testfunction(parameter_1,....,parameter_n) # 这里调用的函数为你的C程序里面的函数名称和对应的参数,是否返回等,请根据实际情况使用