通过嵌入式Python

时间:2015-04-22 09:20:55

标签: python c++ boost-python

我已成功创建了一个看似独立工作的Python模块,但不会影响正在运行它的程序。

我有以下模块:

BOOST_PYTHON_MODULE(mandala)
{
    class_<state_mgr_t, state_mgr_t*, noncopyable>("states", no_init)
        .def("push", &state_mgr_t::push)
        .def("pop", &state_mgr_t::pop)
        .def("count", &state_mgr_t::count);

    scope().attr("states") = boost::python::object(boost::python::ptr(&states));
}

states对象引用全局值states

extern state_mgr_t states;

我可以在我的程序中运行以下脚本行:

from mandala import states
states.count()
> 0

所有这些都很好,但是我期待运行这个python脚本会影响运行它的程序的实际状态。似乎Python实际上只是处理它自己的states实例并且不影响父程序。

现在我想知道我是否完全误解了Boost.Python能够做到的事情;我期待类似于Lua的东西,我可以通过脚本修改C ++程序。

这不可能吗?或者我做错了什么?

提前谢谢!

0 个答案:

没有答案