「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 には、クラス自体をラップするときに明らかにこれを行う方法がありますが、関数で手動で行う方法がわかりません。
どんな助けでも大歓迎です!-追跡