SWIG C++;带回调的绑定 我正在编写一些C++代码的Syg/Python绑定。这就是所谓的Kinect意外API,我有马达和led功能。解析和填充RGB和深度缓冲区的侦听器类的回调似乎没有从SWIG调用。数据捕获线程显然会启动并占用CPU,但回调中没有调试行。填充数据缓冲区并从python轻松访问它们的更好方法是什么 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++中添加了一个最小的侦听器,现在剩下的工作是用类型映射有效地访问数组。目前我正在使用这个天真的类型映射 %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); } } %typemap(out)无符号短[任何]{ int i; $result=PyList_New($1_dim0); 对于(i=0;i

SWIG C++;带回调的绑定 我正在编写一些C++代码的Syg/Python绑定。这就是所谓的Kinect意外API,我有马达和led功能。解析和填充RGB和深度缓冲区的侦听器类的回调似乎没有从SWIG调用。数据捕获线程显然会启动并占用CPU,但回调中没有调试行。填充数据缓冲区并从python轻松访问它们的更好方法是什么 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++中添加了一个最小的侦听器,现在剩下的工作是用类型映射有效地访问数组。目前我正在使用这个天真的类型映射 %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); } } %typemap(out)无符号短[任何]{ int i; $result=PyList_New($1_dim0); 对于(i=0;i,c++,python,swig,kinect,C++,Python,Swig,Kinect,更好的选择?巧合的是,我现在正在研究SWIG的回调 委员会: SWIG提供对函数指针的完全支持,前提是回调函数是用C定义的,而不是用目标语言定义的。。。但是,如果将现有的C函数作为常量安装,则可以将其用作参数。一种方法是像这样使用%常量指令 我计划用手工编写的JNI编写一个C回调函数,以调用Java。如果还有其他方法,我也很想听听。有一种方法可以使用directors功能。 为您的KineCListener代理启用它,一行代码: %feature("director") KinectListen

更好的选择?

巧合的是,我现在正在研究SWIG的回调

委员会:

SWIG提供对函数指针的完全支持,前提是回调函数是用C定义的,而不是用目标语言定义的。。。但是,如果将现有的C函数作为常量安装,则可以将其用作参数。一种方法是像这样使用%常量指令


我计划用手工编写的JNI编写一个C回调函数,以调用Java。如果还有其他方法,我也很想听听。

有一种方法可以使用directors功能。 为您的KineCListener代理启用它,一行代码:

%feature("director") KinectListener

然后,您可以在python代码中继承KineCListener类并定义函数。

我有同样的问题-N0vember的回答回答了这个问题。与其接收指向要调用的函数的指针,不如接收指向多态类的指针,在多态类中,您知道要调用的函数的名称。