У меня плохо спроектированный и большой (> 300 public functions
, >200 numeric constants
, определенный в файле заголовка #define
), который я должен обернуть в Python. У меня есть dll
и файл h
. Библиотека обновляется ежегодно, до сих пор обратно совместимым способом (т. Е. Были добавлены только функции, константа сохраняла их числовые значения и т. Д.). Но у меня нет никаких гарантий, поскольку я не контролирую библиотеку.Поддержание работоспособности упаковки python библиотеки C
Использование ctypes
, я вижу два способа оборачивать это в Python:
- Mapping каждую постоянную и функцию питона, 1 к 1
- Переосмысление API в Python и делать звонки в библиотеку ,
Первое может быть сделано в (примерно) автоматическим способом из файла заголовка и, следовательно, проще в обслуживании и модернизации, то второй требует много питона кода, но это будет проще в использовании.
Я был бы признателен за некоторые мнения, основанные на вашем опыте с этим типом проблемы и некоторыми примерами.
Извините, но так хорошо, что это не совсем ясный вопрос. –
Взгляните на SWIG. –
[SIP] (http://pypi.python.org/pypi/SIP/4.14) может быть интересным решением. –