我正在使用 boost python 在我的 C++ 应用程序中嵌入 python。
我希望能够调用 boost python 函数对象,并将全局名称空间与该函数调用相关联。具体来说,简化后的相关代码为:
bp::object main = bp::import("__main__");
bp::object main_namespace = main.attr("__dict__");
//Put the function name runPyProg in the main_namespace
bp::object PyProg = exec(
"import cStringIO\n"
"import sys\n"
"sys.stderr = cStringIO.StringIO()\n"
"def runPyProg(exp):\n"
" print exp\n"
" exec(exp)\n"
" return\n"
"\n",main_namespace);
//Now call the python function runPyProg with an argument
bp::object py_fn = main.attr("runPyProg");
py_fn(expStr)
我知道当我使用 boost python exec() 函数时,我可以在全局命名空间中发送,如上所示。我的问题是当我调用 py_fn 时如何将 main_namespace 与 python 函数相关联?我的最终目标是将来自 runPyProg 的局部变量放在 main_namespace 中。
谢谢你。