使用pybind11,如何将我的代码拆分为多个模块/文件?

gma*_*gno 4 c++ python pybind11

使用pybind11,如何将我的代码拆分为多个模块/文件?这样可以加快编译步骤。Pybind11文档介绍了扩展在其他扩展模块(在此处)中声明的类型的特殊情况。但不是更通用/更简单的一种。

gma*_*gno 6

按照pybind11常见问题,在这里PYBIND11_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);
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

ex1.cpp:

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

ex2.cpp:

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

  • 那么“PYBIND11_MODULE”语句怎么样?您可以有多个附加到当前模块的“PYBIND11_MODULE”吗? (4认同)