ctypes介绍
python标准库自带的模块,支持调用C的动态链接库文件(windows下为*.dll,linux下为*.so)
示例代码:
# 加载动态链接库文件
ll = cdll.LoadLibrary
lib = ll("lib/libTest.so")
# 生成函数指针
# 假设库中有函数int foo(char*)
foo = lib.foo
# 设置参数格式
foo.argtypes = [c_char_p]
# 设置返回值格式
foo.restype = c_int
坑
事件的起源是,和学长一起做项目,学长留给我一个2700行的C++文件并表示”你要的接口我都已经写好了,你拿去直接用就行”。开心的我拿回去封装了就跑
其中有一个C++函数funcA
,接受一个const char* rfile
作为输入文件名,返回一个char* res
作为结果。于是第一次就写了如下代码:
ll = cdll