Salut a Tous,

J'ai un code en C (compose d'un fichier principale: main.c ... et d'un fichier qui contient quelques fonctions utiles: fonctions.c) dont je voudrais pouvoir scripter l'utilisation avec python.

Aussi, je veux pouvoir appeler python a partir du code C. Pour cela, j'utilise Python.h et les fonctions PyRun_SimpleString & co. pour executer du code python a partir de main.c

en gros (tres gros meme) ca ressemble a ca:

main.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#include <Python.h>
 
#include "fonctions.h"
 
int main(){
 
   Py_Initialize();
   PyRun_SimpleString("code python here");
   Py_Finalize();
 
}
fonctions.c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
#include "fonctions.h"
 
void set_value_of_a(int x){
 
a=x;
 
}
fonctions.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
int a;
void set_value_of_a(int x);

ma fonction set_value_of_a() utilise donc la variable globale "a" definie dans "fonctions.h"... jusque la rien de speciale.


Ensuite, j'utilise SWIG pour utiliser set_value_of_a() dans Python. Cela peut paraitre bizarre a 1ere vue....en effet pourquoi traduire du C en python pour ensuite apeler cela fonctions via C de nouveaux...autant utiliser la fonction C directement.

Oui, mais je veux pouvoir benifier des fonctions python comme les boucles for et les conditions if/else. Ca serait beaucoup trop lourd a coder en C (ca serait comme re-inventer son propre language et compilateur !). Par example, l'utilisateur pourrait vouloir utiliser une boucle for pour donner une certaine valeur a , faire quelques trucs avec cette valeur, changer la valeur, refaire des trucs...etc....


Bref, mon probleme se situe au niveau de la variable globale a. SWIG cree une variable cvar pour acceder au variable globale (avec module.cvar.a) mais cette variable est differente de ma variable a definie dans le code C.

Comment faire pour que ce soit reellement la meme variable ? Quelqu'un a-t-il recontre le meme probleme ? y-a-t-il une solution ?

meri d'avance.

ps: j'esperes que mon explication etait assez clair ?
pps: j'esperes aussi que c'est le bon forum...Swig est un peu a part mais pas assez populaire pour qu'il sa categorie propre je suppose

David