2010-07-15 11 views
7

Continuo a vedere persone che scrivono wrapper per, ad esempio un modulo scritto in linguaggio X per usarlo in linguaggio Y. Volevo sapere le basi della scrittura di questi wrapper. Da dove si parte? La mia domanda qui è più specifica per libgnokii, come faccio a iniziare a scrivere i collegamenti Python per questo.Writing binding and wrapper

risposta

7

Si può iniziare leggendo questo: extending python with c or c++ E poi quando si decide che è troppo fastidio, è possibile controllare swig o eventualmente Boost.Python. ctypes potrebbe anche essere utile.

Ho eseguito il wrapping manuale di classi C++ e ho utilizzato swig. il sorso era molto più facile da usare, ma alla fine volevo fare cose che non erano facili da fare (o ero troppo pigro per capire come). Così ho finito per fare il wrapping manuale. È un po 'di lavoro, ma se conosci un po' di C, è molto fattibile.

2

È possibile iniziare guardando here per informazioni sull'estensione di Python con C. Probabilmente vorrai pensare a come tradurre l'API di libgnokii in qualcosa di Pythonic mentre ci sei. Se non vuoi fare molto lavoro, puoi semplicemente scrivere un involucro sottile che traduca tutte le chiamate API gnokii in funzioni Python.

+0

COSÌ creare cose Pythonic significherebbe scrivere l'intera libreria come un modulo da zero? – tsudot

+2

No, non necessariamente. Un esempio di quello che ho fatto: avevo una classe C++ di cui avevo bisogno per creare un oggetto prima che potessi usare una funzione (in questo caso, la funzione avrebbe dovuto essere statica). Invece di fare in modo che l'utente del modulo python seguisse gli stessi passi, ho appena incorporato un oggetto di quella classe nella mia estensione python e esposto la funzione come una funzione in un modulo python, nascondendo il fatto che apparteneva a una classe, che non era è davvero necessario Quindi, riordina un po 'le interfacce. –