我正在爲一些C++代碼編寫一些SWIG/Python綁定。這就是所謂的Kinect Accidental API,我有電機和LED功能working。對解析和填充RGB和Depth緩衝區的Listener類的回調似乎沒有從SWIG調用。數據捕獲線程顯然啓動並開始佔用CPU,但是沒有來自回調的調試線路通過。什麼是更好的方式來填充數據緩衝區並從python中輕鬆訪問它們?帶回調的SWIG C++綁定
class KinectListener
{
public:
virtual ~KinectListener(){};
virtual void KinectDisconnected(Kinect *K) {};
virtual void DepthReceived(Kinect *K) {};
virtual void ColorReceived(Kinect *K) {};
virtual void AudioReceived(Kinect *K) {};
};
這裏是監聽器類與虛擬方法,可以Python的包裹該類的版本被用於繼承爲C++類聽衆?我在C++中增加了一個最小的監聽器,現在剩下的工作是使用typemaps有效地訪問數組。目前我正在使用這個天真的類型地圖
%typemap(out) unsigned short [ANY] {
int i;
$result = PyList_New($1_dim0);
for (i = 0; i < $1_dim0; i++) {
PyObject *o = PyInt_FromLong((long)$1[i]);
PyList_SetItem($result,i,o);
}
}
更好的選擇?
我有同樣的問題 - N0vember的回答回答它。不是接收指向要調用的函數的指針,而是接收一個指向多態類的指針,在該類中您知道要調用的函數的名稱。 – Jonathan 2011-02-05 06:14:00