我正在开发一个项目,该项目需要我在 Python 中为我需要从 Python 调用的 C 库创建一些包装器。对于上下文,我使用的 C 库是一堆头文件 (.h) 和静态链接库文件 (.a)
我决定使用 CFFI 或 Cython 来完成我的工作。对于 CFFI -使用 CFFI 连接 C 代码,我遵循了与此类似的示例,对于 Cython -通过使用 Cython 包装您的 C 库可从 Python 调用它。现在我在这两个模块中尝试过的小示例程序或多或少都有以下步骤
- 创建接口代码以调用 C API
- 在 CFFI 中,它是一个 python 文件,用于声明所需的 C 函数和头文件
- 在 Cython 中,它是一个 .pyx 文件和对 setup.py 的修改
- 构建接口代码以生成
.so
用于接口胶水代码的文件。 .so
通过从文件中导入接口库,从不同的 python 脚本调用包装函数。
现在,这对我来说非常有效。但是,我必须在该过程中经历两个执行步骤(生成.so
文件,然后实际运行 python 脚本并调用 C API)。
我需要知道是否有办法在一个执行步骤中完成上述所有操作。就像,我想运行我的最终 python 脚本,它应该构建接口代码并在一次执行中即时导入它。
有关更多上下文,我尝试了 SWIG,但无法找到一种方法来.a
用它包装静态链接库。ctypes 也是如此。