在dbus-cxx中调用方法后收到多个参数
问题描述:
我使用dbus-cxx通过dbus进行方法调用。现在有方法返回多个参数,我不知道如何接收第一个参数旁边的任何参数。在dbus-cxx中调用方法后收到多个参数
我初始化代理方法:
DBus::MethodProxy<int>& info_proxy = *(object->create_method<int>(ServerName, "Info"));
并且当我抢的返回值,它只是在这种情况下,三种可能的输出的第一个值。
描述方法的XML看起来是这样的:
<method name="Info">
<arg type="i" direction="out" name="rate"/>
<arg type="i" direction="out" name="freq"/>
<arg type="i" direction="out" name="nch"/>
</method>
调用从内QDBusViewer提供输出Arguments: 1813099, 44100, 2
的方法,因此提供三种输出,但我无法弄清楚如何访问这些。
编辑:我得到它的工作,通过使用工具DBUS-CXX-xml2cpp我得到了使用DBus::CallMessage
而不是DBus::MethodProxy
方法定义。得到的答复包含方法返回的所有参数。
答
我知道它的工作,通过使用工具dbus-cxx-xml2cpp
我有一个方法的定义,使用DBus::CallMessage
而不是DBus::MethodProxy
。得到的答复包含方法返回的所有参数。
为什么不用代码生成器('dbus-cxx-xml2cpp'工具)从XML生成类?但是如果你亲自操作,我希望看到类似这样的东西:'DBus :: MethodProxy'。 –
Velkan
我在构建工具时遇到了一些困难,因此我决定手工完成。 我有像你之前建议的功能,但是当我运行该程序时,我得到'抛出'std :: shared_ptr <:error>'的实例后调用terminate,我无法找到问题。 – Dorni
如果很难构建,那么使用OS自带的dbus wrapper是很有意义的:它可能是'dbus-C++'(或者找到一个打包的'dbus-cxx')。什么是构建错误? DBu s :: Error'异常中的错误是什么? – Velkan