【问题标题】:With pybind11, how to split my code into multiple modules/files?使用 pybind11,如何将我的代码拆分为多个模块/文件?
【发布时间】:2019-05-14 17:03:43
【问题描述】:

使用 pybind11,如何将我的代码拆分为多个模块/文件? 这将加快编译步骤。 Pybind11 文档解决了扩展在不同扩展模块here 中声明的类型的特殊情况。但不是更通用/更简单的。

【问题讨论】:

    标签: python c++ pybind11


    【解决方案1】:

    根据 pybind11 FAQ,herePYBIND11_MODULE(module_name, m){ /* bindings */ } 可以拆分为不同文件中定义的多个函数。示例:

    example.cpp:

    void init_ex1(py::module &);
    void init_ex2(py::module &);
    /* ... */
    
    PYBIND11_MODULE(example, m) {
        init_ex1(m);
        init_ex2(m);
        /* ... */
    }
    

    ex1.cpp:

    void init_ex1(py::module &m) {
        m.def("add", [](int a, int b) { return a + b; });
    }
    

    ex2.cpp:

    void init_ex2(py::module &m) {
        m.def("sub", [](int a, int b) { return a - b; });
    }
    

    【讨论】:

    • PYBIND11_MODULE 声明呢?你能有多个PYBIND11_MODULE 附加到当前模块吗?
    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    相关资源
    最近更新 更多