目标是在c ++中创建一个numpy数组并在python中访问它。
以下代码块作为程序运行时运行正常。 但是,如果我使用ctypes并运行该函数,则会在_import_array调用上进行segfaults。有人能告诉我为什么会这样吗?
#include "Python.h"
#include "numpy/arrayobject.h"
using namespace std;
extern "C"
PyObject* test_create_numpy() {
Py_Initialize();
_import_array();
double* a = new double[1];
a[0] = 1.0;
npy_intp dims = {1};
PyObject *Arr = PyArray_SimpleNewFromData( 1, &dims, PyArray_FLOAT64, a);
return Arr;
}
int main() {
test_create_numpy();
return 0;
}
使用的python代码:
utils = cdll.LoadLibrary("test.dylib")
test_create_numpy = utils.test_create_numpy
test_create_numpy.restype = py_object
ret_vec = test_create_numpy()
print ret_vec