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程序里面的函数名称和对应的参数,是否返回等,请根据实际情况使用