j'essaie d'ecrire un binding c++ python. mais j'ai un probleme de
conversion de type. le source est la:
http://www.freenopen.net/~guillaume/info/prog/source/pypointer-20050706-1428.tar.gz
Python 2.3.5 (#2, May 29 2005, 00:34:43)
[GCC 3.3.6 (Debian 1:3.3.6-5)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pypointer
>>> toto = pypointer.PyTest("toto")
>>> toto.printString()
toto
0
>>> toto.setString("tata")
0
>>> toto.printString()
tata
0
au dessus ca montre que ca marche un peu...
>>> titi = ""
>>> toto.getString(titi)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
Boost.Python.ArgumentError: Python argument types in
PyTest.getString(PyTest, str)
did not match C++ signature:
getString(Test {lvalue}, char**)
>>>
je ne sais pas ou est le probleme de type, sur la conversion char** /
str? ou sur le PyTest / Test ?
tout aide est la bienvenue :)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Amaury
bonjour,
j'essaie d'ecrire un binding c++ python. mais j'ai un probleme de conversion de type. le source est la: http://www.freenopen.net/~guillaume/info/prog/source/pypointer-20050706-1428.tar.gz
...
titi = "" toto.getString(titi)
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème: en python, une chaîne de caractères n'est pas modifiable ("mutable"), et le passage de paramètres se fait par valeur et non par référence. Il est donc exclu que getString puisse modifier la variable titi...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est facile).
Amaury.
bonjour,
j'essaie d'ecrire un binding c++ python. mais j'ai un probleme de
conversion de type. le source est la:
http://www.freenopen.net/~guillaume/info/prog/source/pypointer-20050706-1428.tar.gz
...
titi = ""
toto.getString(titi)
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème:
en python, une chaîne de caractères n'est pas modifiable ("mutable"), et
le passage de paramètres se fait par valeur et non par référence.
Il est donc exclu que getString puisse modifier la variable titi...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un
paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est facile).
j'essaie d'ecrire un binding c++ python. mais j'ai un probleme de conversion de type. le source est la: http://www.freenopen.net/~guillaume/info/prog/source/pypointer-20050706-1428.tar.gz
...
titi = "" toto.getString(titi)
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème: en python, une chaîne de caractères n'est pas modifiable ("mutable"), et le passage de paramètres se fait par valeur et non par référence. Il est donc exclu que getString puisse modifier la variable titi...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est facile).
Amaury.
Guillaume Desticourt
Amaury wrote:
[...]
titi = "" toto.getString(titi)
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème: en python, une chaîne de caractères n'est pas modifiable ("mutable"), et le passage de paramètres se fait par valeur et non par référence. Il est donc exclu que getString puisse modifier la variable titi...
k. je ne connais presque pas python donc...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est facile).
apres recherche, j'ai cru comprendre qu'il fallait utiliser les tupple: http://mail.python.org/pipermail/c++-sig/2005-June/009098.html mais je n'ai pas reussi a adapter l'exemple a une methode, la doc de boost etant ce qu'elle est :(
je me suis donc contente d'ecrire un petit wrapper pour prendre le prototype que tu m'as suggere, ce n'est pas exactement ce que je cherchais a faire, mais bon "ca marche".
merci,
-- Guillaume Desticourt
Amaury wrote:
[...]
titi = ""
toto.getString(titi)
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème:
en python, une chaîne de caractères n'est pas modifiable ("mutable"), et
le passage de paramètres se fait par valeur et non par référence.
Il est donc exclu que getString puisse modifier la variable titi...
k. je ne connais presque pas python donc...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un
paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est
facile).
apres recherche, j'ai cru comprendre qu'il fallait utiliser les tupple:
http://mail.python.org/pipermail/c++-sig/2005-June/009098.html
mais je n'ai pas reussi a adapter l'exemple a une methode, la doc de
boost etant ce qu'elle est :(
je me suis donc contente d'ecrire un petit wrapper pour prendre le
prototype que tu m'as suggere, ce n'est pas exactement ce que je
cherchais a faire, mais bon "ca marche".
Même sans rien connaître de Boost.Python, on voit qu'il y a un problème: en python, une chaîne de caractères n'est pas modifiable ("mutable"), et le passage de paramètres se fait par valeur et non par référence. Il est donc exclu que getString puisse modifier la variable titi...
k. je ne connais presque pas python donc...
Il faudrait que tu puisses écrire quelque chose comme:
titi = toto.getString()
Regarde donc la doc de Boost pour savoir comment on transforme un paramètre "out" en valeur de retour. (en tout cas, avec Swig, c'est facile).
apres recherche, j'ai cru comprendre qu'il fallait utiliser les tupple: http://mail.python.org/pipermail/c++-sig/2005-June/009098.html mais je n'ai pas reussi a adapter l'exemple a une methode, la doc de boost etant ce qu'elle est :(
je me suis donc contente d'ecrire un petit wrapper pour prendre le prototype que tu m'as suggere, ce n'est pas exactement ce que je cherchais a faire, mais bon "ca marche".