为什么如此琐碎地使用PyArray_SimpleNewFromData segfault?

时间:2019-04-28 05:35:02

标签: python c numpy

我正在尝试在python的C扩展中使用NumPy。

我遇到了我无法解释的段错误,我将其缩小为这个简单的示例。

#include "numpy/arrayobject.h"

int main()
{
    int dims[] = {1};
    double d[] = {1};

    PyArray_SimpleNewFromData(1, dims, NPY_DOUBLE, &d);
}

1 个答案:

答案 0 :(得分:1)

https://docs.scipy.org/doc/numpy/user/c-info.how-to-extend.html

  

必须声明此函数,以便外部代码可以看到它   例行公事除了添加所需的方法和常量外,   此子例程还必须包含import_array()和/或   import_ufunc()取决于所需的C-API。忘记放置   这些命令将显示为难看的细分错误(崩溃)   实际调用任何C-API子例程后。

我还必须事先添加Py_Initialize(),因为这是一个独立的示例,无法像通常那样通过Python虚拟机运行。