如何解决_import_array从Visual C ++向python传递数组时返回-1
当我尝试从Visual Studio 2019 C ++将数组传递给python(3.7.9)时,py_array对象引发了一个异常,即``对象引用未设置为对象的实例''。在检查完numpy / _multiarray_api.h中的_import_array()返回值-1之后,这可能会导致上述异常。那么,如何在Python版本> = 3中正确import_array()呢? 预先感谢。
Cpp代码:
# include "Python.h"
# include <numpy/arrayobject.h>
private: System::Void pythonStripButton_Click(System::Object^ sender,System::EventArgs^ e) {
float Array[] = { 1.2,3.4,5.6,7.8 };
float* ptr = Array;
PyObject* pName,* pModule,* pDict,* pFunc,* pArgs,* sysPath,* path,* path2;
npy_intp dims[1] = { 4 };
PyObject* py_array;
Py_Initialize();
sysPath = PySys_GetObject("path");
path = PyUnicode_FromString((char*)"./python");
// int result = PyList_Insert(sysPath,path);
PyList_Append(sysPath,path);
path2 = PyUnicode_FromString((char*)"./x64/Python3.7.9/Lib/site-packages");
PyList_Append(sysPath,path2);
pName = PyUnicode_FromString("pyCode");
pModule = PyImport_Import(pName);
pDict = PyModule_GetDict(pModule);
init_numpy();
py_array = PyArray_SimpleNewFromData(1,dims,NPY_FLOAT,ptr);
pArgs = PyTuple_New(1);
PyTuple_SetItem(pArgs,py_array);
pFunc = PyDict_GetItemString(pDict,(char*)"pyArray");
if (PyCallable_Check(pFunc))
{
PyObject_CallObject(pFunc,pArgs);
}
else
{
}
Py_Finalize();
}
int init_numpy() {
import_array();
return 0;
}
pyCode.py:
import numpy as np
def pyArray (a):
return 0
引发的异常:“ System.NullReferenceException” 你调用的对象是空的。 (py_array)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。