1
我使用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'工具)從XML生成類?但是如果你親自操作,我希望看到類似這樣的東西:'DBus :: MethodProxy'。 –
Velkan
我在構建工具時遇到了一些困難,因此我決定手工完成。 我有像你之前建議的功能,但是當我運行該程序時,我得到'拋出'std :: shared_ptr'的實例後調用terminate,我無法找到問題。 –
Dorni
如果很難構建,那麼使用OS自帶的dbus wrapper是很有意義的:它可能是'dbus-C++'(或者找到一個打包的'dbus-cxx')。什麼是構建錯誤? DBu s :: Error'異常中的錯誤是什麼? – Velkan