从动态库调用时,import_array段错误

时间:2016-02-19 22:28:53

标签: python c++ numpy ctypes

目标是在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

0 个答案:

没有答案