Mam źle zaprojektowane i duże (> 300 public functions
, >200 numeric constants
zdefiniowane z #define
w pliku nagłówkowym), które muszę zawinąć w Pythonie. Mam plik dll
i h
. Biblioteka jest aktualizowana co roku, dotychczas w sposób kompatybilny wstecz (tj. Dodano tylko funkcje, stała zachowuje ich wartości liczbowe, itp.). Ale nie mam żadnych gwarancji, ponieważ nie kontroluję biblioteki.Utrzymywanie pakowania w python biblioteki C
Korzystanie ctypes
, widzę dwa sposoby zawijania to w Pythonie:
- Mapping każdą stałą i funkcji do Python, 1 do 1
- Redefiniowanie API w Pythonie i wykonywanie połączeń do biblioteki .
Pierwszy można zrobić w (w przybliżeniu) sposób automatyczny z pliku nagłówka i dlatego jest łatwiejsza do utrzymania i modernizacji, drugi wymaga dużo kodu Pythona, ale to będzie łatwiejszy w obsłudze.
Chciałbym docenić niektóre opinie na podstawie doświadczeń z tego typu problemem i kilka przykładów.
Przepraszam, ale tak dobre, jak to jest, to naprawdę nie jest jasne pytanie. –
Spójrz na SWIG. –
[SIP] (http://pypi.python.org/pypi/SIP/4.14) może być interesującym rozwiązaniem. –