我正在使用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