Совместимость с Python C - PullRequest
3 голосов
/ 27 января 2010

Я хочу обернуть существующую библиотеку C (чистый C, то есть. C ++) в Python, чтобы я мог вызывать ее из сценариев Python. Какой подход среди различных доступных (C Api, SWIG и т. Д.) Будет наиболее подходящим?

Ответы [ 3 ]

8 голосов
/ 27 января 2010

идут с Ctypes, это часть стандартного дистрибутива и работает очень хорошо. в основном вы можете обернуть структуры и типы C в классы Python, а также в функции. Некоторые типы и функциональность уже предоставлены библиотекой.

ctypes

пара предостережений: передача тройных указателей подпрограммам C не очевидна (если нужно), и я не мог заставить его работать со статическими библиотеками в Linux, DLL и общие объекты - это нормально.

4 голосов
/ 27 января 2010

SWIG отлично подходит для этого. Вот пример учебника: http://www.swig.org/Doc1.3/Python.html.

0 голосов
/ 27 января 2010

Поскольку ваш код "чистый" C, вы можете рассмотреть возможность использования Pyrex / Cython. Это не вопрос голосования, и Cython уже упоминался. Я просто объясняю, почему это лучший выбор для чистого C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...