Bonjour.
Voilà maintenant je cherche à appeler des variables créer dans python avec du C.(L'inverse de Swig en faite).
J'ai utiliser pour comprendre le processus l'exemple donné par pfeuh dans un post intitule :
Résolu] [SWIG] dialogue entre code C et code python
dmichel (8ième en partant du bas du forum).
j'ai juste remplace #include "D:\Python24\include\Python.h" par #include "D:\Python25\include\Python.h"
Lorsque je compile en mode Deubug avec VS2008, j'ai le message d'erreur suivant : 1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'python25_d.lib'
Lorsque je compile en mode Release j'obtiens : 1>LINK : fatal error LNK1104: impossible d'ouvrir le fichier 'python25.lib'
De plus je ne comprends pas dans son code en C, comment VS peux aller chercher le fichier python_sub.py (voir bas de page).
L'invoquation de #include "D:\Python25\include\Python.h" suffit il pour connaitre l'acces au .py
Mes recherches google sur le pb de 'python25_d.lib' me disent qu'il faut créer soit même en mode debud le .py. Je ne comprends pas la signification de cela.
Auriez vous déjà eu le même problème?
Merci.;)
Le code est le suivant : test_python.c
Le code python : python_sub.pyCitation:
#include <stdio.h>
#include "D:\Python25\include\Python.h"
PyObject *mymod, *func, *pyparams, *retval;
int CallPythonInc(int myint){
int js;
func = PyObject_GetAttrString(mymod, "PythonInc");
pyparams = Py_BuildValue("(l)", myint);
retval = PyEval_CallObject(func,pyparams);
PyArg_Parse(retval, "I",&js);
return js;
}
int CallPythonGet(void){
int js;
func = PyObject_GetAttrString(mymod, "PythonGet");
retval = PyEval_CallObject(func,NULL);
PyArg_Parse(retval, "l",&js);
return js;
}
int main(void){
int _result, _testvar = 1536;
Py_Initialize();
mymod = PyImport_ImportModule("python_sub");
_result = CallPythonGet();
printf ("Python global var:%u\n",_result);
_result = CallPythonInc(_testvar);
printf ("Initial value:%u Incremented value:%u\n",_testvar,_result);
Py_Finalize();
return 0;
}
Citation:
pythonvar = 123456789;
def PythonInc(myint):
return myint + 1
def PythonGet():
global pythonvar
return pythonvar