我已成功创建了一个看似独立工作的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 ++程序。
这不可能吗?或者我做错了什么?
提前谢谢!