私はアプリケーションにPythonを埋め込むためにBoostを使用しています。例えば、次の関数が第1と第2のパラメータとして整数と文字列を受け取ることを確認したい(この関数はC++で定義されている)。Pythonを組み込む:スクリプタを助けるには?
someFunction(123, 'words')
パラメータが間違っている場合、どのように修正する必要があるかについてスクリプタにどのように通知できますか?
私はアプリケーションにPythonを埋め込むためにBoostを使用しています。例えば、次の関数が第1と第2のパラメータとして整数と文字列を受け取ることを確認したい(この関数はC++で定義されている)。Pythonを組み込む:スクリプタを助けるには?
someFunction(123, 'words')
パラメータが間違っている場合、どのように修正する必要があるかについてスクリプタにどのように通知できますか?
Pythonの場合と同様に、知りたい情報をすべて入れて例外を発生させます。実際、その答えはとても分かりやすいように見えるので、私はあなたの質問に何か不足していると思います。
あなたはいつもdef("someFunction",someFunction,...)
を使用して関数をラップした場合、呼び出し側は、この方法は、1つの辞書の引数を取ります(このような自動的のpythonから渡されたオブジェクトと一致することができませんでしたC++の署名について通知を取得します、代わりに3つの数字と呼ばれています):
>>> scene.updateAttrs(1,2,3)
ArgumentError: Python argument types in
Serializable.updateAttrs(Scene, int, int, int)
did not match C++ signature:
updateAttrs(Serializable {lvalue}, boost::python::dict)
問題を確認するためのコードを投稿できますか?