私はクローズドソースのC++ライブラリを使用しました。これは、次と同等のコードを持つヘッダーファイルを提供します。
class CSomething
{
public:
void getParams( unsigned char & u8OutParamOne,
unsigned char & u8OutParamTwo ) const;
private:
unsigned char u8OutParamOne_,
unsigned char u8OutParamTwo_,
};
私はそれをPythonに公開しようとしています、私のラッパーコードは次のようなものです:
BOOST_PYTHON_MODULE(MySomething)
{
class_<CSomething>("CSomething", init<>())
.def("getParams", &CSomething::getParams,(args("one", "two")))
}
今私はPythonでそれを使おうとしていますが、それはひどく失敗します:
one, two = 0, 0
CSomething.getParams(one, two)
その結果:
ArgumentError: Python argument types in
CSomething.getParams(CSomething, int, int)
did not match C++ signature:
getParams(CSomething {lvalue}, unsigned char {lvalue} one, unsigned char {lvalue} two)
Boost.PythonラッパーコードまたはPythonコードのいずれかを機能させるために何を変更する必要がありますか?Boost.Pythonの魔法を追加して、自動的にキャストPyInt
しunsigned char
たり、その逆を行うにはどうすればよいですか?