dbus_g_proxy_call到freedesktop“Get”方法给出错误预期类型gchararray,得到类型代码'v'

时间:2014-01-20 02:07:54

标签: c glibc dbus

我理解错误消息表明它的类型为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'

1 个答案:

答案 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支持。   见上文。