Python cffi 模块:verify() 是否需要 re-compiling 我想从我的 python 代码中使用的整个 c 库?

Python cffi module: does verify() require re-compiling the entire c library I want to use from my python code?

假设我需要使用共享库中的一些函数,例如。 G。 libfoo.so,来自 python 代码。我认为 cffi 模块可以帮助我,特别是因为如果使用 verify() 函数,它似乎支持不透明类型。

虽然我没有完全理解,documentation 的意思是

verify() [...] is an alternative: instead of doing a dlopen, it generates and compiles a piece of C code.

我是否必须重新编译整个 libfoo.so?还是只是某一部分(header的相关部分)?如果是后者,那么在依赖项、配置选项等方面的麻烦是不是大大减少了……?

不,ffi.verify()(以及 soon-to-be-released cffi 1.0 中的 ffi.set_source())生成并编译调用现有库的轻量级 C 包装器。 C 包装器包含调用库函数的常规 C 代码,因此与 C 一样,库不需要重新编译即可使用---但是,也与 C 一样,您需要 headers 安装了该库(通常来自 OS 发行版中名为 libfoo-dev 的包)。