用C++调用C+绑定

2024-10-01 17:25:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些C++代码的Syg/Python绑定。这就是所谓的Kinect意外API,我有马达和led功能working。对解析并填充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++中添加了一个最小的侦听器,现在剩下的工作是用类型映射有效地访问数组。目前我正在使用这个朴素的类型映射

^{pr2}$

更好的选择?在


Tags: 数据方法代码功能api类型ledvirtual
2条回答

巧合的是,我正在调查SWIG的回调。在

SWIG 2.0 documentation says this

SWIG provides full support for function pointers provided that the callback functions are defined in C and not in the target language. ... However, existing C functions can be used as arguments provided you install them as constants. One way to do this is to use the %constant directive like this ...

我计划用手工编写的JNI编写一个C回调来调用Java。如果有别的办法,我也很乐意听到。在

有一种方法可以使用控制器功能。 为您的KinectListener代理启用它,一行代码:

%feature("director") KinectListener

然后您可以从python代码中的KinectListener类继承并定义函数。在

相关问题 更多 >

    热门问题