韶子

梦想皆有神助...
关于 QtDBus 的种种

  QtDbus用于进程间的通信,可靠、稳定。具体实现也很方便,文章http://www.cuteqt.com/blog/?p=167http://www.cuteqt.com/blog/?p=178里讲得非常清楚。

但是实现起来还是遇到了一些麻烦。

  1. 远程调用函数不能使用指针类型作为参数或者返回值。在XXX.h函数里加入诸如 int* func(); 或 void func(int *);之类的函数,然后使用qdbuscpp2sxml工具生成xml文件时,可以发现这样的函数根本没有写入xml文件中。
  2. 返回值和参数的总个数不能超过两个。否则的话虽然可以编译通过,但是运行时会报错说找不到函数。

对于问题1,貌似可以通过将指针类型的数组放在一个vector里,然后就可以用了。但是如果只是传递指针的话,由于进程之间无法共用内存,所以也就没有什么意义了。

对于问题2,在使用dbuscpp2xml和dbusxml2cpp工具生成Adaptor和Interface以后,这些工具会将qreal类型转换成double类型,所以调用的时候会说找不到函数。这是就自己到Adaptor和Interface的文件里找到该函数,然后把里面的double改成qreal就好了。对于其他数据类型也可以有类似的处理。

 

除此之外,貌似这种方法对远程函数的参数数目有一定的限制,不能太多。

posted on 2012-04-20 22:02  韶子  阅读(652)  评论(0编辑  收藏  举报