我理解错误消息表明它的类型为variant
。我不明白的是为什么。此调用似乎采用与Freedesktop DBus Tutorial相同的格式。我在proxy = NULL
电话之前分配了dbus_g_proxy_new_for_name
,之后我检查了proxy != NULL
,因此我非常确信proxy
不是问题所在。我怎么能纠正这个?
if (!dbus_g_proxy_call(proxy, "Get", &err, G_TYPE_STRING,
"org.mpris.MediaPlayer2.Player", G_TYPE_STRING,
"PlaybackStatus", G_TYPE_INVALID,
G_TYPE_STRING, &pb_status, G_TYPE_INVALID))
fprintf(stderr, "ERROR : %s\n", err->message);
输出:
ERROR : Expected type gchararray, got type code 'v'
答案 0 :(得分:0)
Get方法返回变体类型,而不是字符串类型。
旁注 - http://www.freedesktop.org/wiki/Software/DBusBindings/
GDBus(GLib中的D-Bus支持)
从版本2.26开始,GLib包含D-Bus绑定。这是为了 替换DBus-GLib绑定,许多应用程序已经启动 迁移他们的代码。请参阅高级和。的文档 低级API以获取更多详细信息。
DBus-GLib(已废弃)
新的GLib应用程序应该使用GLib内置的D-Bus支持。 见上文。