Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void foo(void* data)
- {
- py::object* obj(reinterpret_cast<py::object*>(data));
- py::print(obj->attr("name"));
- }
- void bar()
- {
- py::object mod(py::module::import("os"));
- void* data = reinterpret_cast<void*>(&mod);
- foo(data);
- }
- void bar2()
- {
- // Note: Not using a smart pointer here means you will have to be extra careful
- // to avoid memory leaks.
- std::unique_ptr<py::object> mod(std::make_unique<py::object>());
- *mod = py::module::import("os");
- void* data = reinterpret_cast<void*>(mod->ptr());
- foo(data);
- }
- int main()
- {
- py::scoped_interpreter guard{};
- try {
- bar();
- bar2();
- } catch (py::error_already_set& e) {
- std::cerr << e.what() << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement