mirror of
https://github.com/pocketpy/pocketpy
synced 2025-11-05 11:10:17 +00:00
support dynamic library.
This commit is contained in:
parent
1127d59b47
commit
dc546f5699
@ -50,4 +50,13 @@ using module_ = module;
|
|||||||
} \
|
} \
|
||||||
static void _pkbind_register_##name(::pkbind::module& variable)
|
static void _pkbind_register_##name(::pkbind::module& variable)
|
||||||
|
|
||||||
|
#define PYBIND11_MODULE(name, variable) \
|
||||||
|
static void _pkbind_register_##name(::pkbind::module& variable); \
|
||||||
|
extern "C" bool pybind_module_initialize() { \
|
||||||
|
auto m = ::pkbind::module::create(#name); \
|
||||||
|
_pkbind_register_##name(m); \
|
||||||
|
return true; \
|
||||||
|
} \
|
||||||
|
static void _pkbind_register_##name(::pkbind::module& variable)
|
||||||
|
|
||||||
} // namespace pkbind
|
} // namespace pkbind
|
||||||
|
|||||||
@ -12,6 +12,17 @@ PYBIND11_EMBEDDED_MODULE(example, m) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PYBIND11_MODULE(example3, m) {
|
||||||
|
m.def("add", [](int a, int b) {
|
||||||
|
return a + b;
|
||||||
|
});
|
||||||
|
|
||||||
|
auto math = m.def_submodule("math");
|
||||||
|
math.def("sub", [](int a, int b) {
|
||||||
|
return a - b;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
TEST_F(PYBIND11_TEST, module) {
|
TEST_F(PYBIND11_TEST, module) {
|
||||||
@ -52,4 +63,20 @@ TEST_F(PYBIND11_TEST, raw_module) {
|
|||||||
EXPECT_EQ(math2.attr("sub")(4, 3).cast<int>(), 1);
|
EXPECT_EQ(math2.attr("sub")(4, 3).cast<int>(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(PYBIND11_TEST, module3) {
|
||||||
|
pybind_module_initialize();
|
||||||
|
|
||||||
|
py::exec("import example3");
|
||||||
|
EXPECT_EVAL_EQ("example3.add(1, 2)", 3);
|
||||||
|
|
||||||
|
py::exec("from example3 import math");
|
||||||
|
EXPECT_EVAL_EQ("math.sub(1, 2)", -1);
|
||||||
|
|
||||||
|
py::exec("from example3.math import sub");
|
||||||
|
EXPECT_EVAL_EQ("sub(1, 2)", -1);
|
||||||
|
|
||||||
|
auto math = py::module::import("example3.math");
|
||||||
|
EXPECT_EQ(math.attr("sub")(4, 3).cast<int>(), 1);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user