将函数从 .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 函数,这是我的解决方法
- 在 C++ 头文件和 CPP 文件中定义您的函数。
- 使用 cdef ,在导入模块的开头定义 Python 脚本中的函数 定义其他 variables.This 定义类似于 C++ 头文件定义
- 在将参数和数组传递给来自 python 的函数调用时,确保所有变量和数组都类型转换为 CPP。
- 对于数组来说,有点棘手。例如。 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,...)
休息会顺利进行。
让我先声明一下,我是在大量研究后提出这个问题的,并没有找到任何直接和逐步的示例。
已经阅读了 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 函数,这是我的解决方法
- 在 C++ 头文件和 CPP 文件中定义您的函数。
- 使用 cdef ,在导入模块的开头定义 Python 脚本中的函数 定义其他 variables.This 定义类似于 C++ 头文件定义
- 在将参数和数组传递给来自 python 的函数调用时,确保所有变量和数组都类型转换为 CPP。
- 对于数组来说,有点棘手。例如。 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,...)
休息会顺利进行。