mirror of
https://github.com/pocketpy/pocketpy
synced 2025-11-04 18:50:16 +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)
|
||||
|
||||
#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
|
||||
|
||||
@ -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 {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user