将由cython包装的代码中的c数组返回给python,

时间:2018-10-30 22:05:10

标签: cython

我试图从python运行我的C ++代码,因为我想将其与具有python接口的开源软件耦合,因此我使用cython来进行包装。我的C ++代码可以从python编译,但是在返回浮点向量的结果时遇到一些问题。我可以将单个浮点数或整数返回给python,但不能返回向量。我尝试返回指针,就像通常对C ++函数所做的那样,但是python无法识别C ++形式的指针。
这是一个简化的代码,显示我的意思。

我的.hpp文件是:

#include "mpi.h"

float my_cppfun(int D);

我的.cpp文件:

#include <stdio.h>
#include <stdlib.h>
#include <vector>

#include "my_cpp.hpp"


float  my_cppfun(int D)
 {
  float DD[D];
  int i; 
  for (i=0;i<D;i++){
    DD[i]=i;
  }

  return DD[i-1];
  //return DD  instead of DD[i-1]
  }

我的.pyx文件是:

cdef extern from "my_cpp.hpp":
    float my_cppfun(int)

def my_cpp(int D):

    return my_cppfun(D)    

我的.py文件是:

from mpi4py import MPI
from pympi import my_cpp

y=my_cpp(3)
print y

还有setup.py文件,此文件目前正在运行。我想知道如何返回DD数组而不是单个浮点值(DD [i-1])。 在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

您将需要列出并返回该列表。

List的文档应该有所帮助。 PyList_New,PyList_SetItem等