对于DBUS方法,例如
org.freedesktop.DBUS.Properties.Set(string,string,A Value)
它将“任何有效的DBus类型”作为其第三个参数,该参数的DBUS类型(即BOOLEAN)必须包装在一个变量中。

网上没有很多明确的示例说明如何执行此操作。如何在不使用dbus-c++库的情况下用C++创建此变体?

最佳答案

我花了一段时间才弄清楚这一点。

您可以使用以下功能执行此操作:

DBusMessageIter iter,subIter;

//append arguments to the Set() method. (string interface, string property, value)
dbus_message_iter_init_append(msg, &iter);

dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,&interfaceString);
dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING,&propertyString);

//HOW TO CALL VARIANT?:
dbus_message_iter_open_container(&iter, DBUS_TYPE_VARIANT, DBUS_TYPE_BOOLEAN_AS_STRING, &subIter);
dbus_message_iter_append_basic(&subIter, DBUS_TYPE_BOOLEAN, &valBOOL);
dbus_message_iter_close_container(&iter, &subIter);

在此示例中,第三个参数是字符串形式的DBUS_TYPE_BOOLEAN。 &valBool的类型为dbus_bool_t

希望它能帮助某人。

10-07 20:33