from cffi import FFI
ffi = FFI()
header_path = '/usr/include/libelf.h'
with open(header_path) as f:
ffi.cdef(f.read())
lib = ffi.dlopen('/usr/local/lib/libelf.so')
上面的代码是我实际上正在努力解决的问题。要使用 libelf 的某些功能,我需要包装库和标头。经过长时间的复训,这似乎是正确的做法。
但是我收到了一个解析错误:
无法解析“#ifndef _LIBELF_H”
似乎所有这些表达式都会导致解析错误。我怎么解决这个问题?或者是否有另一种方法包装:库和标题?
答案 0 :(得分:0)
ffi.cdef() 不能处理预处理器指令。 ffi.cdef() 的目的是指定python 和C 之间共享的对象。它没有被编译(this example does not call any C compiler)。要么从文件流 f
中删除所有预处理器指令,要么挑选出真正需要的头部分并将它们复制粘贴到 ffi.cdef() 中。