Hello all,
I'd like to call a Python function from a C++ code. The Python
function has numpy.ndarrays as input.
I figured that the easiest way would be to use ctypes.
However, I can't get numpy and ctypes to work together.
----------- run.c ------------
#include
#include
void run(PyArrayObject *y, PyObject *f) {
npy_intp Ny = PyArray_SIZE(y);
}
------- end run.c ----------
-------- run.py ----------
import os, ctypes, numpy
_r = numpy.ctypeslib.load_library('librun.so', os.path.dirname(__file__))
_r.run.argtypes = [ctypes.py_object]
x = numpy.array([1,2,3.])
_r.run(x)
-------- end run.py ----------
Compiling gives me the warning:
gcc -o librun.so -I/usr/include/python2.6
-I/usr/lib/python2.6/dist-packages/numpy/core/include -O0 -fpic
-shared -Wall run.c
run.c: In function ‘run’:
run.c:5: warning: unused variable ‘Ny’
run.c: At top level:
/usr/include/python2.6/numpy/__multiarray_api.h:968: warning:
‘_import_array’ defined but not used
and when I run it I get a segmentation fault.
I guess I'm not the first one who has this problem, but I couldn't
find something useful on the web.
Any pointers are suggestions are welcome.
cheers,
Sebastian