Как SWIG оборачивает карту в Python?

Я использую SWIG 2.0 для создания оболочки Python для библиотеки C ++. Один метод имеет аргумент типа «const std :: map &». SWIG с радостью создает для него оболочку, но я не могу понять, как вызвать этот метод. Если я передаю, например, {"a": "b"} для этого аргумента, я получаю ошибку «NotImplementedError: Неверное количество или тип аргументов для перегруженной функции».

Я посмотрел на сгенерированный файл .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 &""'"); 
}

Он четко знает, что аргумент существует и что он должен быть чем-то, что преобразуется в карту. Но я не могу понять, что на самом деле он хочет, чтобы я выдал за него.

9
задан peastman 27 January 2012 в 22:58
поделиться