Segmentierungsfehler in PyArray_SimpleNewFromData

Ich versuche, ein Array von C ++ mit der C-API an Python zu übergeben. Durch das Betrachten verschiedener Themen hier wurde mir klar, dass ich die PyArray_SimpleNewFromData-Methode verwenden sollte. Wenn ich versuche, auf einem sehr kleinen Array zu implementieren, erhalte ich einen Segmentierungsfehler in meinem Code, den ich nicht erkennen kann. Kann mir jemand bei diesem Problem helfen?

C ++ Code:

void init_numpy()
{
    import_array(); 
}
int main(int argc, char *argv[])
{
PyObject *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs, *pXVec, *xarr1;
PyObject *c ;
PyObject *pValue1 ;
int fArray[2] = {10,1} ;
PyObject *p = NULL ;
npy_intp m1 = 2;
Py_Initialize();
PySys_SetArgv(argc, argv); 
init_numpy();
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");
c = PyArray_SimpleNewFromData(1,&m1,NPY_INT,fArray);
printf("check3\n");
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,0,c);    
pValue = PyObject_CallObject(pFunc, pArgs);
if (pArgs != NULL)
{
   Py_DECREF(pArgs);
}
// Clean up
Py_DECREF(pModule);
Py_DECREF(pName);

// Finish the Python Interpreter
Py_Finalize();

return 0;

}

Python-Code:

import numpy as np
import scipy.io

def main(a): 
    print a

Output on verbose:

check0
check1
check2
Segmentation fault (core dumped)

Antworten auf die Frage(0)

Ihre Antwort auf die Frage