0

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

不过,我并不完全理解,文档的含义是什么

verify() [...] 是另一种选择:它不是执行 dlopen,而是生成并编译一段 C 代码。

我必须重新编译整个 libfoo.so 吗?还是只是某个部分(标题的相关部分)?如果是后者,这在依赖项、配置选项等方面的麻烦是否明显减少……?

4

1 回答 1

1

不,ffi.verify()(以及即将发布的 cffi 1.0 中的 ffi.set_source())生成并编译一个轻量级 C 包装器,它调用您现有的库。C 包装器包含调用库函数的常规 C 代码,因此与 C 一样,库不需要重新编译即可使用——但是,与 C 一样,您需要具有标头安装的那个库(通常来自一个类似于libfoo-dev你的操作系统发行版的包)。

于 2015-05-10T09:21:02.277 回答