如何在pybind11上绑定地图

how to make bind a map on pybind11

我正在为 cpp 中的加密进行回溯测试,但后端在 python 和 flask 上,我尝试使用 pybind11 以使 cpp 在后端工作,这是我的绑定代码

namespace py = pybind11;
PYBIND11_MAKE_OPAQUE(std::map<std::string, double>);

PYBIND11MODULE(backtester, m)
{

    py::class<BT::Backtester>(m, "Backtester");
    m.def(py::init<py::bind_map<std::map<std::string, double>>());
   
}

当我编译绑定时出现这个错误

会是什么?我该如何解决错误?提前致谢

py::bind_map 告诉 pybind11 绑定一个类型,它不会影响 py::init 得到的参数。这可能是您想要做的:

namespace py = pybind11;
PYBIND11_MAKE_OPAQUE(std::map<std::string, double>);

PYBIND11_MODULE(backtester, m)
{
    py::bind_map<std::map<std::string, double>>(m, "StringDoubleMap");
    py::class<BT::Backtester>(m, "Backtester");
    m.def(py::init<std::map<std::string, double>>());
}

就像我在评论中所说的那样,您应该只包含 pybind11/stl.h 并让 pybind11 处理 dict/map 转换。