dbus“U g”代理“调用freedesktop”;获得;方法给出错误预期类型gchararray,获取类型代码';v';

dbus“U g”代理“调用freedesktop”;获得;方法给出错误预期类型gchararray,获取类型代码';v';,c,glibc,dbus,C,Glibc,Dbus,据我所知,错误消息表明它得到了一个类型变量。我不明白的是为什么。此调用似乎遵循与相同的格式。我在调用dbus\u g\u proxy\u new\u for\u name之前分配了proxy=NULL,并检查了proxy!=空之后,因此我相当有信心代理不是问题所在。我怎样才能纠正这个问题 if (!dbus_g_proxy_call(proxy, "Get", &err, G_TYPE_STRING, "org.mpris.MediaPlayer2.Player", G_TYPE_ST

据我所知,错误消息表明它得到了一个类型
变量
。我不明白的是为什么。此调用似乎遵循与相同的格式。我在调用
dbus\u g\u proxy\u new\u for\u 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'

Get方法返回变量类型,而不是字符串类型

旁注-

GDBus(GLib中的D总线支持)

自版本2.26以来,GLib包括一个D-Bus绑定。这是为了 替换DBus GLib绑定,许多应用程序已经启动 迁移他们的代码。请参阅文档以了解高级和高级功能 有关详细信息,请参阅低级API

DBus油嘴滑舌(过时)

新的GLib应用程序应该使用内置于GLib中的D总线支持。 见上文