【发布时间】:2019-12-19 12:10:50
【问题描述】:
我有一个静态 C 库,我需要从 Python 调用它。我正在为此查看ctypes,但是它只能与动态加载的库一起使用。静态链接库是否有等效或替代方法?
【问题讨论】:
-
单独的静态库几乎没有用。它应该链接到 ELF(或 Win 上的 PE)。
标签: python c static-libraries
我有一个静态 C 库,我需要从 Python 调用它。我正在为此查看ctypes,但是它只能与动态加载的库一起使用。静态链接库是否有等效或替代方法?
【问题讨论】:
标签: python c static-libraries
你不能;静态库用于链接以创建新的可执行文件或动态库,仅此而已。但是你可能可以create a dynamic library from a static one (more info here),这取决于静态库的编译方式。
【讨论】:
我用来执行此操作的一个选项是从 C\C++ 应用程序中执行 python 脚本。 Boost.Python 实现是我用来完成此任务的。我将库文件静态链接到 C 应用程序并从应用程序运行 python 脚本。 C 应用程序中调用静态 C 库的方法可以暴露给 python 脚本。
虽然以上是一个解决方案...另一种方法是在 python 中构建一个管道客户端,然后连接到静态链接到您的库的 C 应用程序(运行管道服务器)。
【讨论】: