首页 > 解决方案 > 无法将函数返回值转换为 Python 类型

问题描述

我想使用 pybind11 将 c++ 函数绑定到 python。C++ 函数返回:

auto tree_fusion_depth_map(const hg::tree & tree_1, const hg::tree & tree_2, const hg::tree & tree_3) {
   //some code here
   return xt::eval(xt::view(depth, xt::range(0, nleaves)));

当我在 python 中调用该函数时,我得到:

TypeError: Unable to convert function return value to a Python type! The signature was
    (arg0: higra.higram.Tree, arg1: higra.higram.Tree, arg2: higra.higram.Tree) -> xt::xtensor_container<xt::uvector<long, xsimd::aligned_allocator<long, 16ul> >, 1ul, (xt::layout_type)1, xt::xtensor_expression_tag>

这是 c++ 代码中的 python 模块和文档字符串:

        PYBIND11_MODULE(mbfusion, m)
        {
            xt::import_numpy();

            m.doc() = R"pbdoc(
                An example higra extension
            )pbdoc";

            m.def("function", function, "An example function.");

        }

我该如何解决这个问题?

标签: pythonc++python-3.xc++14pybind11

解决方案


推荐阅读