将函数从 .cpp 文件导入 python

importing functions from .cpp file into python

让我先声明一下,我是在大量研究后提出这个问题的,并没有找到任何直接和逐步的示例。

已经阅读了 Cython、SWIG、Boostpython 文档,但无法获得逐步过程,因此在此处发布 -

我有一个 .cpp 和 .h 文件,其中包含几个数学函数 defined.I 想在 python (.py) 代码文件中调用它们。

我如何集成?哪种方法最好、最简洁。请说明

参见 Cython 文档的 this part;它会带您逐步完成与 C 库的接口。

因为我最终使用这里提供的一些帮助和研究解决了它,让我post回答。

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

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

我遇到的问题是从 Python.So 调用 CPP 函数,这是我的解决方法

  1. 在 C++ 头文件和 CPP 文件中定义您的函数。
  2. 使用 cdef ,在导入模块的开头定义 Python 脚本中的函数 定义其他 variables.This 定义类似于 C++ 头文件定义
  3. 在将参数和数组传递给来自 python 的函数调用时,确保所有变量和数组都类型转换为 CPP。
  4. 对于数组来说,有点棘手。例如。 Python 中的双精度数组可以使用 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,...)

休息会顺利进行。