如何解析 DBus 响应,这是一种复杂的数据类型?

问题描述 投票:0回答:1

我需要使用 libdbus-cpp 库来获取 org 方法调用的答案

org.freedesktop.DBus.ObjectManager GetManagedObjects
。他的答案是
a{oa{sa{sv}}}
类型。如果我没理解错的话,我需要把这个方法的答案写到
std::map<std::string, std::map<std::string, std::map<std::string, DBus::Variant>>>
。最有可能的是,这需要使用 dbus_message_iter_open_container 函数来完成,但我不明白如何操作,并且我没有在网络或官方文档中找到任何合适的示例。请告诉我如何做到这一点?

c++ linux dbus
1个回答
0
投票

想通了。最方便的方法是从所需的 DBus 对象调用 Introspect 方法并将输出保存到 *.xml 文件。然后,我们用这个 *.xml 文件作为参数调用

dbusxx-xml2cpp
并生成一个代理类。我们将它连接到我们的项目,瞧。我们可以调用给定 DBus 对象的任何方法

© www.soinside.com 2019 - 2024. All rights reserved.