繁体   English   中英

如何使用 CFFI 将包含其标头的 C 库包装到 python 程序中?

[英]How do I wrap a C-library including its header into a python program using CFFI?

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”

似乎所有这些表达式都会导致解析错误。 我怎么解决这个问题? 或者是否有另一种包装方法:库和标头?

ffi.cdef() 不能处理预处理器指令。 ffi.cdef() 的目的是指定在 python 和 C 之间共享的对象。它没有被编译( 这个例子没有调用任何 C 编译器)。 要么你消除你的FILESTREAM所有预处理指令f或您cherrypick这些头部分,你确实需要,并将它们复制并粘贴到您ffi.cdef()。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM