Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SWIG à l'envers

10 réponses
Avatar
Franck Pommereau
Bonjour,

Je connais SWIG pour produire un binding Python d'une librairie C.

Mais existe-t-il un outil qui fasse l'inverse : produire un binding C
pour des modules Python ? (Et encore mieux, un outil qui produise des
bindings dans plein de langages dont C...)

Merci d'avance pour toute indication...
Franck

10 réponses

Avatar
MC
Bonsoir !

binding
???


BIN-DINGue ? Un dingue du binaire ?






--
@-salutations

Michel Claveau

Avatar
Franck Pommereau
binding
???



Heu... on doit dire « liaison » en français... Mais il s'agit en fait de
porter une API d'un langage à un autre sans changer la librairie
(pardon, bibliothèque) sous-jacente. (Comme PyGTK qui est un binding
Python de GTK+ écrite en C.)

F.


Avatar
Bruno Desthuilliers
Bonjour,

Je connais SWIG pour produire un binding Python d'une librairie C.

Mais existe-t-il un outil qui fasse l'inverse : produire un binding C
pour des modules Python ?


Pas exactement - et je doute que ce soit possible - mais tu devrais
peut-être regarder comment embarquer un interpréteur CPython.

Avatar
Amaury Forgeot d'Arc
Bonjour,

Je connais SWIG pour produire un binding Python d'une librairie C.

Mais existe-t-il un outil qui fasse l'inverse : produire un binding C
pour des modules Python ? (Et encore mieux, un outil qui produise des
bindings dans plein de langages dont C...)


C'est intéressant...
A quoi ce "binding" devrait-il ressembler ? Pourrais-tu donner quelques
exemples ?

Sans attendre les réponses, je te propose d'aller voir du côté de
boost::python, qui a a sans doute tous le trucs qu'il faut pour appeler
python à partir du C++, sans s'occuper des détails fastidieux.

C'est plus facile dans ce sens-là: Python a une interface beaucoup plus
régulière que le C.

--
Amaury

Avatar
Franck Pommereau
Pas exactement - et je doute que ce soit possible - mais tu devrais
peut-être regarder comment embarquer un interpréteur CPython.


C'est ce que je m'apprête à faire si je ne trouve pas un outil pour me
mâcher le travail...

Avatar
Franck Pommereau
C'est intéressant...
A quoi ce "binding" devrait-il ressembler ? Pourrais-tu donner quelques
exemples ?


Je dirais un type C pour chaque class Python et des fonctions pour les
méthodes, nommées selon le module et la classe. Par exemple un module
egg avec :

class Foo :
def bar (x, y) :
...

Ça donnerait :

PyObject Foo;
PyObject Egg_Foo_Bar (PyObject c, y);

Sans attendre les réponses, je te propose d'aller voir du côté de
boost::python, qui a a sans doute tous le trucs qu'il faut pour appeler
python à partir du C++, sans s'occuper des détails fastidieux.

C'est plus facile dans ce sens-là: Python a une interface beaucoup plus
régulière que le C.


Je vais de ce pas regarder si je peux booster mon binding, merci !

Franck

Avatar
kib
Bonjour,

j'avais déjà vu cette question quelque part, j'ai donc recherché
où...c'était par ici :

http://www.thescripts.com/forum/thread38507.html

Apparement, ça mène à Elmer (que je ne connaissais pas) et qui à l'air
bien sympathique:

http://elmer.sourceforge.net/

mais je ne sais pas ce que ça vaut...
Avatar
Franck Pommereau
j'avais déjà vu cette question quelque part, j'ai donc recherché
où...c'était par ici :

http://www.thescripts.com/forum/thread38507.html

Apparement, ça mène à Elmer (que je ne connaissais pas) et qui à l'air
bien sympathique:

http://elmer.sourceforge.net/

mais je ne sais pas ce que ça vaut...


Ça m'a l'air de convenir parfaitement ! Je vais regarder ça...
Merci beaucoup.
Franck

Avatar
remi_inconnu
On 25 oct, 09:06, Franck Pommereau wrote:
j'avais déjà vu cette question quelque part, j'ai donc recherché
où...c'était par ici :

http://www.thescripts.com/forum/thread38507.html

Apparement, ça mène à Elmer (que je ne connaissais pas) et qui à l'air
bien sympathique:

http://elmer.sourceforge.net/

mais je ne sais pas ce que ça vaut...


Ça m'a l'air de convenir parfaitement ! Je vais regarder ça...
Merci beaucoup.
Franck


Pyrex (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/)
produit du code C à partir de code écrit en python.


Avatar
Franck Pommereau
Pyrex (http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/)
produit du code C à partir de code écrit en python.


Merci, je vais regarder ça. Mais il me semble que le but est de générer
des modules pour Python. Sont-il facilement utilisables depuis C ?

Franck