3

「SWIG and Python」チュートリアルの次のセクションを読みました: http://www.swig.org/Doc1.1/HTML/Python.html#n11

例で彼らが何をしているのか理解しています。基本的には、python を呼び出す C 関数を記述します。ただし、提供されている例では、引数リストで double のみを使用しているため、python の引数リストを構築するのはかなり簡単です。

次のシグネチャを持つ C++ コールバックがあります。

Vector (*CALLBACK)(Simulation*, Vector, Vector, double, void*)

ここで、Vector と Simulation は私自身のクラスであり、void* は PyObject を保持する clientData 用です (例で使用されているように)

SWIG が Vector クラスと Simulation クラスの両方をラップしていることはわかっています。なぜなら、それらは Python シェルで作成できるからです。唯一の問題は、コールバック関数の Vector 引数を Python 引数リストの適切な PyObject に変換する方法がわからないことです。SWIG には、クラス自体をラップするときに明らかにこれを行う方法がありますが、関数で手動で行う方法がわかりません。

どんな助けでも大歓迎です!-追跡

4

1 に答える 1

0

あなたの質問は実際にはSWIGに関するものではないと思います。それは純粋にPythonに関するものです。このレベルでは、問題は単にCからPythonを呼び出すことであるため、Pythonドキュメントの「引数の解析と値の構築」を学習する必要があります。「Pythonインタープリターの拡張と埋め込み」もあります。)

于 2011-07-08T00:49:55.810 に答える