I know that this thing has been answered many times, and I also read the documentation, but still I cannot clearly understand how it works. Like in, I cannot understand how the values ββare populated in my arguments. Examples do not explain this very clearly (or maybe I cannot). Can someone help me understand how the arguments of this function are populated? What should be their values? I need to pass a vector from C ++ to Python without reallocating memory. Any help is much appreciated. I have been stuck on this for many days.
My code that I am implementing is:
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs,*pXVec,*c, *xarr1;
int i;
float fArray[5] = {0,1,2,3,4};
npy_intp m = 5;
Py_Initialize();
PySys_SetArgv(argc, argv);
pName = PyString_FromString(argv[1]);
pModule = PyImport_Import(pName);
printf("check0\n");
pDict = PyModule_GetDict(pModule);
printf("check1\n");
pFunc = PyDict_GetItemString(pDict, argv[2]);
printf("check2\n");
printf("check3\n");
c = PyArray_SimpleNewFromData(1,&m,NPY_FLOAT,(void *)fArray);
printf("check3\n");
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,0, c);
pValue = PyObject_CallObject(pFunc, pArgs);
if (pArgs != NULL)
{
Py_DECREF(pArgs);
}
Py_DECREF(pModule);
Py_DECREF(pName);
Py_Finalize();
return 0;
}
source
share