使用pybind11将数组指针从C ++传递给python

时间:2019-09-23 15:50:21

标签: python c++ pybind11

我想从python中的c ++库获取数组的指针并将其保存在变量中,然后将该变量用作另一个c ++函数的参数。

环境

ubuntu18.04,pybind11,python3.6.8

尝试

ctypes

passing-pointer-to-c-from-python-using-pybind11

代码

C ++

// class1:
static complex<double>* randomComplexArray(long size);

complex<double>* randomComplexArray(long n){
    complex<double>* res = new complex<double>[n];
    for ...
    return res; //pointer
}

// class2:
void calc(complex<double>* vals);

pybuind11

// class1:
.def_static("randomComplexArray", &class1::randomCircleArray)

// class2:
.def("calc", (void (*)(complex<double>*)) &class2::calc)

python

p = randomComplexArray(1024)
calc(p) // what I hope

Segmentation faultBus fault等。

我是第一次做这件事。如果有人可以帮助我?

非常感谢!

0 个答案:

没有答案