SWIG 2.0を使用して、C++ライブラリのPythonラッパーを作成しています。 1つのメソッドには、 "const std :: map &"という型の引数があります。 SWIGは喜んでそのラッパーを生成しますが、メソッドを呼び出す方法を理解することはできません。たとえば、その引数に{"a": "b"}を渡すと、 "NotImplementedError:関数のオーバーロードされた関数の引数またはタイプが間違っています"というエラーが表示されます。SWIGはどのようにして<string、string>マップをPythonでラップしますか?
私は、生成された.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コード内から挿入を呼び出すことによって、データ型の変数を作成する必要があると思います。 – mark