Python调用C语言动态库
Python 调用 C 语言写的动态库,挺常见的跨语言操作方案,尤其在搞性能优化或者直接复用老项目代码的时候,香。用ctypes
或者cffi
都行,按你习惯来。示例代码简单,接口清晰,拿来就能跑,调试也方便。
Python 的ctypes
模块,适合直接上手,加载.so
或.dll
文件一句话就搞定。比如你有个用 C 写的加法函数,编译成动态库后,在 Python 里调用就像调用自家函数一样:
from ctypes import cdll
lib = cdll.LoadLibrary("./libmath.so")
result = lib.add(2, 3)
print(result)
如果你的参数比较复杂,像结构体、指针啥的,可以用cffi
来,写起来比ctypes
灵活些。哦对了,记得动态库里函数要加extern "C"
声明,不然名都找不到。
如果你对这块还不太熟,可以参考Python 调用 C 动态库的实现这篇文章,写得比较清楚,尤其是编译细节和路径部分,蛮实用的。
另外还列了一些其他语言调用动态库的例子,比如Electron 调用 C#动态库、Java 调用 DLL这些,也都可以参考下,思路其实都差不多。
如果你是搞嵌入式或者需要高性能场景,这种调用方式还挺合适的。只要接口封装清楚,Python 调用底层代码就像开外挂一样,效率高还稳定。
想玩得顺,建议你提前装好gcc
、注意库路径、还有跨平台差异(Windows 要.dll
,Linux 是.so
)。另外函数参数和返回值的类型要对应上,不然调出来就是一堆莫名其妙的数字,调试挺费劲。
3.95KB
文件大小:
评论区