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:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part int tab[100];
j'ajoute un PyPbject * pBuff:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part PyObject *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs, *pBuff;
J'initialise les éléments de mon tableau:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
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 C : Sélectionner tout - Visualiser dans une fenêtre à part pBuff = PyBuffer_FromMemory(tab,100*sizeof(int));
je crée un tuple à un élément, puis je l'initialise a pBuff:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pArgs = PyTuple_New(1); PyTuple_SetItem(pArgs, 0, pBuff);
et pour finir j'appel ma fonction python avec le buffer:
dans mon code python j'affiche seulement le paramètre en entrée:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part PyObject_CallObject(pFunc, pArgs);
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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 def add_buff(tab): print 'tab = ', tab return 0
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.
Partager