ctypes для статических библиотек? - PullRequest
12 голосов
/ 06 июня 2010

Я пытаюсь написать оболочку Python для poker-eval, статической библиотеки c. Вся документация, которую я могу найти на ctypes, указывает на то, что она работает с общими / динамическими библиотеками. Есть ли ctypes для статических библиотек?

Я знаю о Cython, но должен ли я использовать это или перекомпилировать poker-eval в динамическую библиотеку, чтобы я мог использовать ctypes?

Спасибо

Mike

Ответы [ 2 ]

8 голосов
/ 06 июня 2010

Выбор действительно за вами. Если у вас есть возможность перекомпилировать библиотеку как общий объект, я бы посоветовал это, потому что это сведет к минимуму не-python-код, который вы должны поддерживать. В противном случае вы захотите создать модуль расширения Python, который связывается со статической библиотекой и упаковывает функции, которые она предоставляет.

Вы упомянули Cython; вот соответствующая страница руководства, если вы идете по этому маршруту:

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

Есть также SWIG и Pyrex.

1 голос
/ 06 июня 2010

Не могу с уверенностью сказать, что там нет никаких модулей, но преимущества динамических библиотек (использует меньше места, могут обновляться без перекомпиляции зависимых программ) таковы, что вам, вероятно, лучше делать именно это. *

...