Sto usando SWIG 2.0 per creare un wrapper Python per una libreria C++. Un metodo ha un argomento di tipo "const std :: map &". SWIG genera felicemente un wrapper per questo, ma non riesco a capire come richiamare il metodo. Se passo, ad esempio, {"a": "b"} per quell'argomento, ottengo un errore "NotImplementedError: Wrong number or type of argument overloaded".In che modo SWIG avvolge una mappa <stringa, stringa> in Python?
Ho guardato il file .cxx generato nella speranza che avrebbe chiarito, ma non è stato così. Ecco il codice che elabora tale argomento:
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 &""'");
}
Si sa chiaramente esiste tale argomento, e che si suppone di essere qualcosa che viene convertito in una mappa. Ma non riesco a capire cosa voglia effettivamente passare per questo.
Nel file sorso a te avvolgere in modo esplicito la mappa? Penso che sia necessario creare una variabile del tipo the populate chiamando insert dal codice python. – mark