zoukankan      html  css  js  c++  java
  • c++调用python函数时,使用PyArray_SimpleNewFromData(nd, dims, typenum, data)函数时出现内存错误的问题

      示例程序:

    int main(int argc, char *argv[])
    { PyObject
    *pName, *pModule, *pDict, *pFunc, *pValue, *pArgs,*pXVec,*c, *xarr1; int i; float fArray[5] = {0,1,2,3,4}; npy_intp m[1] = {5};// Initialize the Python Interpreter Py_Initialize(); PySys_SetArgv(argc, argv); // Build the name object pName = PyString_FromString(argv[1]); // Load the module object pModule = PyImport_Import(pName); printf("check0 "); // pDict is a borrowed reference pDict = PyModule_GetDict(pModule); printf("check1 "); // pFunc is also a borrowed reference pFunc = PyDict_GetItemString(pDict, argv[2]); printf("check2 "); c = PyArray_SimpleNewFromData(1,m,NPY_FLOAT,fArray); printf("check3 "); pArgs = PyTuple_New(1); PyTuple_SetItem(pArgs,0, c); pValue = PyObject_CallObject(pFunc, pArgs); if (pArgs != NULL) { Py_DECREF(pArgs); }

    // Clean up Py_DECREF(pModule); Py_DECREF(pName); // Finish the Python Interpreter Py_Finalize(); return 0; }

    运行时出现以下错误:

    解决方法:在Py_Initialize()后加入“import_array()”语句即可。

    Py_Initialize();
    import_array();

    注意:当编译"import_array()"时,可能会出现以下错误:

    解决方法:在自己安装的python目录中搜索"object.h"文件,将其56行"#define Py_REF_DEBUG"语句注释掉即可。

  • 相关阅读:
    选择屏幕工具栏按钮
    通过TCODE查找SPRO路径
    程序间获取ALV显示数据(读取ALV GRID上的数据)
    CL_GUI_FRONTEND_SERVICES 使用问题
    OO ALV 后台运行时错误:Control Framework: Fatal error
    SAP EXCEL OLE常用方法和属性
    OCR论文整理
    pytorch文档阅读(一)
    目标检测论文整理
    PHP excel 科学计数法 画格子线
  • 原文地址:https://www.cnblogs.com/yyxf1413/p/7474248.html
Copyright © 2011-2022 走看看