Ich habe eine schlecht entworfene und große (> 300 public functions
, >200 numeric constants
definiert mit #define
in der Header-Datei), die ich in Python umbrechen muss. Ich habe die dll
und die h
Datei. Die Bibliothek wird jährlich aktualisiert, bis jetzt rückwärtskompatibel (d. H. Nur Funktionen wurden hinzugefügt, eine Konstante behält ihre numerischen Werte usw.). Aber ich habe keine Garantien, da ich die Bibliothek nicht kontrolliere.Wartbarkeit einer Python-Umhüllung einer C-Bibliothek
Mit ctypes
, sehe ich zwei Möglichkeiten, dies in Python Verpackung:
- jede Konstante und Funktion Python Mapping, 1 bis 1
- die API in Python neu definieren und Tätigen von Anrufen in die Bibliothek .
Das erste in einer (in etwa) automatisch aus der Header-Datei durchgeführt werden kann und daher leichter zu pflegen und zu aktualisieren, erfordert die zweite viel Python-Code, aber es wird einfacher zu bedienen sein.
Ich würde einige Meinungen aufgrund Ihrer Erfahrung mit dieser Art von Problem und einigen Beispielen schätzen.
Sorry aber so gut wie das ist, es ist nicht wirklich eine klare Frage. –
Werfen Sie einen Blick auf SWIG. –
[SIP] (http://pypi.python.org/pypi/SIP/4.14) kann eine interessante Lösung sein. –