Problème interfaçage C/python
Bonjour,
j'ai trouvé sur ce site : http://www.codeproject.com/KB/cpp/embedpython_1.aspx un code qui me permet d'appeler une fonction de mon code python à l'aide de l'executable de mon code C, en lui passant des paramètres.
Au lieu de lui passer 2 entier (comme pour la multipication) je lui passe un buffer, pour cela j'ai modifié le code C de la façon suivante:
je déclare mon tableau de 100 int:
j'ajoute un PyPbject * pBuff:
Code:
PyObject *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs, *pBuff;
J'initialise les éléments de mon tableau:
Code:
1 2 3 4 5 6
| int i;
for (i=0;i<100;i++)
{
tab[i]=i;
} |
je crée un buffer qui va lire a l'@ designée par tab:
Code:
pBuff = PyBuffer_FromMemory(tab,100*sizeof(int));
je crée un tuple à un élément, puis je l'initialise a pBuff:
Code:
1 2
| pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs, 0, pBuff); |
et pour finir j'appel ma fonction python avec le buffer:
Code:
PyObject_CallObject(pFunc, pArgs);
dans mon code python j'affiche seulement le paramètre en entrée:
Code:
1 2 3
| def add_buff(tab):
print 'tab = ', tab
return 0 |
On en arrive enfin au problème voila ce que me renvoi l'affichage de tab lorsque je lance ma fonction python avec l'executable:
tab = ☺ ☻ ♥
♦ ♣ ♠
♫ ☼ ► ◄ ↕ ‼ ¶ § ▬ ↨ ↑ ↓ → ← ∟ ↔ ▲ ▼ !
" # $ % & ' ( ) * + , - . / 0 1 2 3 4 5
6 7 8 9 : ; < = > ? @ A B C D E F G H I
J K L M N O P Q R S T U V W X Y Z [ \ ]
^ _ ` a b c
étant donné que les valeurs que j'ai affectées à mon tableau son 0,1,2...99, c'est ce qu'il devarit m'afficher, cependant il m'affiche leur correspondance en caractère ascii mais je ne comprend pas pourquoi.
Conclusion, il lit bien au bon endroit mais il ne lit pas au bon format. Comment pourrai-je lui preciser que ce sont des entiers que je veut qu'il lise?
si quelqu'un a la moindre idée pitié sauvez moi.