我想map<string, string>
在使用boost::python::object
. 我想用它作为输入参数。
我在 Python 中这样定义字典:
script_parameters = {}
我map<string, string>
像这样在 C++ 中传递我的:
typedef map<string, string> CommandParametersMap;
if ( !command_parameters.empty() )
{
CommandParametersMap::iterator begin = command_parameters.begin();
CommandParametersMap::iterator end = command_parameters.end();
boost::python::dict command_parameters_dict;
for (CommandParametersMap::iterator it = begin; it != end; it++)
{
command_parameters_dict[it->first] = it->second;
}
m_script_global["script_parameters"] = command_parameters_dict;
}
然后我运行我的 Python 文件:
object o_result = exec(m_filescript->c_str(), m_script_global, m_script_global);
但问题是:script_parameters
在我的 Python 代码中是空的。我在这里做错了什么?
我不得不提一下,我的代码的所有其他部分,例如执行脚本,都可以正常工作。我只想知道如何使用boost::python::object
.
我尝试了另一种方法,但我仍然遇到同样的问题:
我script_mode
在我的 Python 代码中做了这样的:
script_mode = ""
然后我尝试将 C++ 中的字符串变量传递给 Python,如下所示:
m_script_global["script_mode"] = "Get_Script_Version";
object o_result = exec(m_filescript->c_str(), m_script_global, m_script_global);
当我尝试取回它时,它具有我在 Python 中分配给它的值,即""
.
string mode = extract<std::string>(m_script_global["script_mode"]);