如何将多维数组从C传递到嵌入python函数

时间:2019-02-17 17:19:06

标签: python c embedding cpython python-c-api

这也许是以前问过的,但我需要进一步澄清。 我正在一个项目中,我需要将3D数组从C发送到嵌入式Python函数。

我提到了this,但无法使其适用于3D阵列。 另外,我尝试包含numpy / arrayobject.h,但它给了我贬值警告。 我的代码结构如下:

static PyObject *pName, *pModule,*pDict,*pFunc,
                *pArgs, *pValue, *pPredReturn;

int main(){

  time_t t;
  srand((unsigned) time(&t));

  int A[1][1280][64] = {{{0}}};

for (int j = 0; j<64; j++){
  for(int i = 0; i<1280; i++) {
        A[0][i][j] = (rand() % 2);
     }
}

  Py_Initialize();

  PyObject *sys = PyImport_ImportModule("sys");
  PyObject *path = PyObject_GetAttrString(sys, "path");
  PyList_Append(path, PyUnicode_FromString("."));


  // Build name object
    pName = PyUnicode_FromString("interface");

    // Load module object
    pModule = PyImport_Import(pName);

    // pDict is a borrowed reference
    pDict = PyModule_GetDict(pModule);

    // pFunction
    pFunc = PyDict_GetItemString(pDict, "some_function");

     // What should go here.. ? How should I proceed?
     if (PyCallable_Check(pFunc))
    {
             pArgs = PyTuple_New(1);
             pValue = ...  

            PyTuple_SetItem() ...
            pFuncReturn = PyObject_CallObject(pFunc, pArgs); 
    }

  Py_Finalize();

  return 0;
}

如何修改代码以发送3D数组? 另外,我将从Python中获取3D数组。我应该如何声明Python函数返回值的数据类型?

0 个答案:

没有答案