用于静态库的ctypes

16 投票
2 回答
13966 浏览
提问于 2025-04-15 23:37

我正在尝试为 poker-eval 这个 C 语言的静态库写一个 Python 的封装。根据我找到的关于 ctypes 的所有文档,它主要是用来处理共享库或动态库的。那么,有没有类似于 'ctypes' 的东西可以用在静态库上呢?

我知道有 Cython 这个工具,但我应该使用它,还是把 poker-eval 重新编译成动态库,这样我就可以用 ctypes 呢?

2 个回答

1

我不能确定外面有没有相关的模块,但动态库的好处是很明显的,比如它占用的空间更小,而且可以在不重新编译依赖它的程序的情况下进行更新。所以,选择使用动态库可能是更好的选择。

9

选择权在你自己手里。如果你有能力把这个库重新编译成共享对象,我建议你这样做,因为这样可以减少你需要维护的非Python代码。否则,你就需要构建一个Python扩展模块,它会链接到这个静态库,并包装它所提供的功能。

你提到过Cython;如果你选择这个方向,这里有相关的手册页面:

http://docs.cython.org/src/tutorial/clibraries.html

还有SWIG和Pyrex这两个工具。

撰写回答