gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 06:43:57 26 4
gpt4 key购买 nike

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 的一些功能,我需要包装库和 header 。经过长时间的研究,这似乎是正确的方法。

但是我得到一个解析错误:

cannot parse "#ifndef _LIBELF_H"

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

最佳答案

ffi.cdef() 无法处理预处理器指令。 ffi.cdef() 的目的是指定在 python 和 C 之间共享的对象。它未编译 (this example does not call any C compiler)。您可以从文件流 f 中删除所有预处理器指令,也可以挑选您实际需要的那些 header 部分并将它们复制粘贴到您的 ffi.cdef() 中。

关于python - 如何使用 CFFI 将包含其 header 的 C 库包装到 python 程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31453414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com