PDA

View Full Version : [C++/Python] Wrapper e Interfacciamento


cisc
12-08-2008, 12:29
Ciao a tutti, sto lavorando per interfacciare del codice C++ con python in modo da introdurre un sistema di plugin in python, dato che nell'applicazione in questione c'è una forte architettura ad eventi, sostanzialmente quello che dovrei fare è catturare gli eventi di interesse, creare un wrapper python all'oggetto C++ associato all'evento, e dare la palla al plugin python che dovrebbe avere la possibilità anche di modificare l'oggetto C++ tramite il wrapper.
In questo momento sto usando SWIG, ma sto avendo difficoltà a gestire da python oggetti C++ già creati precedentemente, sembra che il wrapping swig funzioni solo creando nuovi oggetti da python, ma non con oggetti C++ già esistenti, qualche suggerimento a riguardo?:)

cdimauro
12-08-2008, 13:18
Non ho mai lavorato con queste cose (e al momento non avrei il tempo per approfondire).

L'unica soluzione che mi viene in mente al momento è creare un oggetto Python che contenga il riferimento all'oggetto C++ in questione e che funga da proxy per i metodi / attributi che debbono essere visibili lato Python.

nico159
13-08-2008, 12:10
Dai un'occhiata a http://www.riverbankcomputing.co.uk/software/sip/intro

cisc
13-08-2008, 19:08
Non ho mai lavorato con queste cose (e al momento non avrei il tempo per approfondire).

L'unica soluzione che mi viene in mente al momento è creare un oggetto Python che contenga il riferimento all'oggetto C++ in questione e che funga da proxy per i metodi / attributi che debbono essere visibili lato Python.

Si, è sostanzialmente quello che fa swig, il mio problema è fargli capire che non mi serve creare un wrapper su un nuovo oggetto C++, ma mi serve su un oggetto esistente

Dai un'occhiata a http://www.riverbankcomputing.co.uk/software/sip/intro

Vorrei usare swig perchè vorremmo cercare di creare sistemi di plugin analoghi anche per altri linguaggi quali Ruby e Lua, e swig da questo punto di vista aiuta:)

altairz
14-08-2008, 19:55
non sò se può essere d'aiuto (non ho mai provato a fare una cosa del genere) ma forse potresti trovare qualcosa nella documentazione ufficiale:

http://docs.python.org/ext/ext.html

cdimauro
14-08-2008, 20:12
Si, è sostanzialmente quello che fa swig, il mio problema è fargli capire che non mi serve creare un wrapper su un nuovo oggetto C++, ma mi serve su un oggetto esistente
Capito. Niente, purtroppo non avendoci lavorato non saprei. :(
Vorrei usare swig perchè vorremmo cercare di creare sistemi di plugin analoghi anche per altri linguaggi quali Ruby e Lua, e swig da questo punto di vista aiuta:)
Ma lasciali perdere, dai. Python basta e avanza. :cool:

cisc
20-08-2008, 18:43
non sò se può essere d'aiuto (non ho mai provato a fare una cosa del genere) ma forse potresti trovare qualcosa nella documentazione ufficiale:

http://docs.python.org/ext/ext.html

grazie, già conoscevo, cercavo strumenti più ad alto livello per aumentare la produttività, ma alla fine ho dovuto ripiegare per le API Python/C in quanto mi serve un certo controllo sui thread che swig non offre ( e se lo offre non l'ho capito, grazie anche alla documentazione penosa :mad: )

Capito. Niente, purtroppo non avendoci lavorato non saprei. :(

Ma lasciali perdere, dai. Python basta e avanza. :cool:

Beh, l'idea sarebbe introdurre architetture di plugin per vari linguaggi in modo da catturare il maggior numero di programmatori esterni disposti a programmare plugin:D

cdimauro
20-08-2008, 19:52
Sì, l'avevo capito. Era solo una battuta (anche se rimango dell'idea di costringerli a usare Python :D). :)