scipy.io.loadmat() 导致指向 PyImport_Import() 的空指针
scipy.io.loadmat() is causing a null pointer to PyImport_Import()
我正在使用 scipy.io 通过python加载.mat文件。然后,我想在Visual Studio中使用c ++导入此python脚本。
例 1:testpython.py
b=[0,1,2,3]
测试导入.cpp
PyObject *pName = PyUnicode_FromString((char*)"testpython");
std::cout << pName << std::endl;
// Load the module object
PyObject *pModule = PyImport_Import(pName);
std::cout << pModule << std::endl;
PyObject *b = PyObject_GetAttrString(pModule, "b");
std::cout << b << std::endl;
PyObject *barray = PyArray_FromObject(b, NPY_DOUBLE, 1, 2);
std::cout << barray << std::endl;
这有效,但这不是我想做的。
例2:
testpython.py
import scipy.io as sio
x=sio.loadmat('matfile.m')
y=x['variable1']
测试导入.cpp
PyObject *pName = PyUnicode_FromString((char*)"testpython");
std::cout << pName << std::endl;
// Load the module object
PyObject *pModule = PyImport_Import(pName);
std::cout << pModule << std::endl;
PyObject *b = PyObject_GetAttrString(pModule, "y");
std::cout << b << std::endl;
PyObject *barray = PyArray_FromObject(b, NPY_DOUBLE, 1, 2);
std::cout << barray << std::endl;
pModule 返回 null 并且当在 python 中使用 sio.loadmat 时代码会中断,但在不使用 sio.loadmat 时它会起作用。有没有人对正在发生的事情以及如何解决这个问题有任何建议?
谢谢!
在评论中,你说y
是3D(形状120x120x60(。您已在PyArray_FromObject
调用中设置 2D 上限:
// v right here
PyObject *barray = PyArray_FromObject(b, NPY_DOUBLE, 1, 2);
相关文章:
- Python Coverage for C++ PyImport
- 在C++中将Import模拟为来自python的功能
- "import std;" C++的目的
- 你如何在 boost::p ython 中"from __future__ import division"?
- 如何检测#Import dll
- GSOAP SOAPCPP2 #IMPORT:无法打开文件“ SOAP12.H”进行阅读
- 我可以在标头中将一个命名空间"import"到另一个命名空间中吗?
- C++中的嵌入式python:importerror import numpy.core.multiarray
- #import生成不正确的TLH文件
- 如何在#Define内部进行#Import
- 一些缺少的头文件,如import/cli.h,io/FileOutputStream.h或gpu/StreamManag
- 'import' 在 Java 与 C/C++ 中的'#include'
- 比较C++中的#include和使用命名空间std与Python中的import
- 'PyCObject_Import(“cairo”,“CAPI”)“C++调用产生段错误,”import Cai
- 通过以下方式导入架构 <import> - "Imported schema has different targetNameSpace..."
- TinyXML2 C++ Import
- 加载库确切地说明了 #import 的作用
- 什么是 dumpbin /import 显示的输入地址表和输入名称表
- #import C++11 标准的一部分
- #Import 指令失败并显示错误"Request?"不是有效的C++标识符