将.cpp文件中的函数导入python

问题描述 投票:1回答:2

让我先从一个免责声明开始,我在经过大量研究后提出这个问题而没有找到任何直接和一步一步的例子。

已经通过Cython,SWIG,Boostpython文档,但无法得到一步一步的过程,所以发布在这里 -

我有一个.cpp&.h文件,其中定义了几个数学函数。我想在python(.py)代码文件中调用它们。

我如何整合?哪种方式最好也是最好的方法。请说明

python c++ cython boost-python
2个回答
1
投票

请参阅Cython文档的this part;它会逐步引导您与C库进行交互。


0
投票

由于我最终使用此处提供的一些帮助和研究解决了它,让我发布答案。

我使用Cython通过Python导入了CPP函数。

Cython用CPP文件包装Python代码并编译这两个。结果是一个Python模块(可以在setup.py文件中指定模块的名称),并且可以像往常一样调用模块。

我面临的问题是从Python调用CPP函数。所以这里有我的解决方法

  1. 在C ++标题和CPP文件中定义您的函数。
  2. 使用cdef,在导入模块的开头定义其他变量,在Python脚本中定义函数。这个定义类似于C ++头文件定义
  3. 在将参数和数组传递给python的函数调用时,请确保所有变量和数组都作为CPP进行类型转换。
  4. 对于数组,这有点棘手。例如。 Python中的double数组可以使用array.array(array_to_cast)进行类型化。在下面的例子中,我们将python数组dev转换为c ++数组dev_arr。请注意,dev是python中double类型的数组,因此输入array.array()的第一个参数是'd'。
cdef array.array dev_arr = array.array('d',dev)   

在将dev_arr数组传递给主CPP函数时,您必须指定此数组:data.as_doubles

fn_response = cpp_fn_call(stddev_arr.data.as_doubles,...)

休息将顺利进行。

© www.soinside.com 2019 - 2024. All rights reserved.