对于DBUS方法,例如
org.freedesktop.DBUS.Properties.Set(string,string,A Value)
以“任何有效的DBus类型”作为其第三个参数,此参数的DBUS类型(即BOOLEAN)必须包含在变体中。
网上没有很多关于如何做到这一点的明确例子。如何在不使用dbus-c ++库的情况下在C ++中创建此变体?
答案 0 :(得分:3)
我花了一段时间才弄明白这一点。
您可以使用以下功能执行此操作:
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
。
希望它有所帮助。