Почему это тривиальное использование PyArray_SimpleNewFromData segfault? - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь использовать NumPy в расширении C для python.

У меня возникает ошибка, которую я не могу объяснить, я сузил ее до этого простого примера.

#include "numpy/arrayobject.h"

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

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

1 Ответ

1 голос
/ 28 апреля 2019

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

Эта функция должна быть объявлена ​​так, чтобы она была видна коду снаружи рутины. Помимо добавления методов и констант, которые вы желаете, эта подпрограмма также должна содержать вызовы вроде import_array () и / или import_ufunc () в зависимости от того, какой C-API необходим. Забыть место эти команды будут отображаться как ужасная ошибка сегментации (сбой) как только будет вызвана любая подпрограмма C-API.

Я также должен был заранее включить Py_Initialize(), так как это был отдельный пример, который не запускался через Python vm, как обычно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...