我正在使用SWIG 2.0为C++库创建一个Python包装器。一种方法的参数类型为“const std :: map &”。 SWIG很高兴地为它生成一个包装,但我无法弄清楚如何调用该方法。例如,如果我为该参数传递{“a”:“b”},则会得到一个“NotImplementedError:错误的数字或参数类型为重载函数”错误。SWIG如何在Python中包装map <string,string>?
我看着生成的.cxx文件,希望它可以澄清,但它没有。下面是处理该参数的代码:
res4 = SWIG_ConvertPtr(obj3, &argp4, SWIGTYPE_p_std__mapT_std__string_std__string_t, 0 | 0);
if (!SWIG_IsOK(res4)) {
SWIG_exception_fail(SWIG_ArgError(res4), "in method '" "new_Context" "', argument " "4"" of type '" "std::map< std::string,std::string > const &""'");
}
它清楚地知道该参数存在,并且它应该是被转换为地图的东西。但我无法弄清楚它真的需要我通过它。
在你痛饮文件给你明确地包裹在地图?我想你需要通过从python代码中调用insert来创建一个填充类型的变量。 – mark 2012-01-27 23:22:45