Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C+扩展Python/Numpy+;,模块在初始化时崩溃 我试图在Windows上使用C++来扩展Python 3.6,跟踪和。Anaconda发行版与更新至最新版本的numpy一起使用。在项目“代码> python .h < />代码>代码> ARAYObjul.h < /C>已添加到C++目录中,代码> python 36. LIB < /C>链接,如建议. _C++_Python 3.x_Numpy - Fatal编程技术网

使用C+扩展Python/Numpy+;,模块在初始化时崩溃 我试图在Windows上使用C++来扩展Python 3.6,跟踪和。Anaconda发行版与更新至最新版本的numpy一起使用。在项目“代码> python .h < />代码>代码> ARAYObjul.h < /C>已添加到C++目录中,代码> python 36. LIB < /C>链接,如建议.

使用C+扩展Python/Numpy+;,模块在初始化时崩溃 我试图在Windows上使用C++来扩展Python 3.6,跟踪和。Anaconda发行版与更新至最新版本的numpy一起使用。在项目“代码> python .h < />代码>代码> ARAYObjul.h < /C>已添加到C++目录中,代码> python 36. LIB < /C>链接,如建议. ,c++,python-3.x,numpy,C++,Python 3.x,Numpy,对于代码,一个简单的示例假设在调用func1方法时创建一个包含元素0,1,2,3的数组: #include <python.h> #include <arrayobject.h> static PyObject* fun(PyObject* self, PyObject* args) { PyObject *X; int x[4] = {0,1,2,3}; int dims[1]; dims[0] = 1; X = PyArra

对于代码,一个简单的示例假设在调用
func1
方法时创建一个包含元素
0,1,2,3
的数组:

#include <python.h>
#include <arrayobject.h> 

static PyObject* fun(PyObject* self, PyObject* args)
{
    PyObject *X;
    int x[4] = {0,1,2,3};
    int dims[1];
    dims[0] = 1;
    X = PyArray_SimpleNew(1, dims, NPY_INT64, x);

    return X;
}

static PyMethodDef MyMethod[] = {
    { "func1", fun, METH_VARARGS,nullptr },
    { nullptr, nullptr, 0, nullptr } 
};

static struct PyModuleDef MyModule = {
    PyModuleDef_HEAD_INIT,
    "MyModule", 
    NULL, 
    -1,      
    MyMethod
};

PyMODINIT_FUNC PyInit_MyModule(void)
{
    (void)PyModule_Create(&MyModule);
    import_array();
}
#包括
#包括
静态PyObject*fun(PyObject*self,PyObject*args)
{
PyObject*X;
int x[4]={0,1,2,3};
int-dims[1];
dims[0]=1;
X=PyArray\u SimpleNew(1,dims,NPY\u INT64,X);
返回X;
}
静态PyMethodDef MyMethod[]={
{“func1”,fun,METH_VARARGS,nullptr},
{nullptr,nullptr,0,nullptr}
};
静态结构PyModuleDef MyModule={
PyModuleDef_HEAD_INIT,
“MyModule”,
无效的
-1,      
我的方法
};
PyMODINIT_FUNC PyInit_MyModule(无效)
{
(void)PyModule_Create(&MyModule);
导入数组();
}

代码构建得很好。当我获取生成的
.pyd
文件并将其导入Spyder时,内核崩溃。具体来说,
import_array()命令似乎会导致崩溃,因为没有它内核就不会崩溃。然而,正如文档所指出的,该方法随后崩溃。修复方法是什么?

通过更改顺序解决了此问题:

    PyMODINIT_FUNC PyInit_MyModule(void)
    {
        import_array();
        return PyModule_Create(&MyModule);            
    }
所有文档似乎都只涉及Python2.X,它使用了。在Python3中,需要修改代码。(在创建数组的过程中也有一个小错误,但我还是听之任之)