【发布时间】:2012-01-27 22:58:11
【问题描述】:
我正在使用 SWIG 2.0 为 C++ 库创建 Python 包装器。一种方法具有“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 &""'");
}
它清楚地知道参数存在,并且它应该是转换为地图的东西。但我无法弄清楚它到底想让我为它传递什么。
【问题讨论】:
-
在你的 swig 文件中明确地包装地图?我认为您需要通过从 python 代码中调用 insert 来创建填充类型的变量。