对于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
。希望它能帮助某人。