2

我想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"]);
4

0 回答 0