调用dbus接口上的方法时发生GLib-GIO-CRITICAL错误。

我正在使用lgi动态Lua绑定到基于GObject的库,通过dbus在应用程序之间进行通信。以下是我的应用程序方法调用的dbus-send命令输出的一部分。

方法返回发送者=:1.2 -> dest=:1.19 reply_serial=2

数组[ 字典输入( 字符串 "XYZ" 变量 int32 1 ) 字典输入( 字符串 "ABC" 变量 int32 0 ) 字典输入( 字符串 "EFG" 变量 字符串 "str" ) 字典输入( 字符串 "HIJ" 变量 字符串 "8c011401-4836-4889-8fa5-32ddb894a97a" ) 字典输入( 字符串 "KLM" 变量 字符串 "dummy" ) ]

现在我想设置上面输出中的“DEF”值,该值的签名为'a {sv}'。以下是我编写的代码:

当我运行上面的脚本时,我遇到了以下错误:

(process:19120): GLib-GIO-CRITICAL **: g_dbus_connection_call_sync_internal: assertion '(parameters == NULL) || g_variant_is_of_type (parameters, G_VARIANT_TYPE_TUPLE)' failed.

如何设置上述值?我错在哪里?有人可以帮帮我吗?

提前致谢。

点赞
用户3003365
用户3003365

错误非常清楚地告诉了您问题所在。调用 call_sync(C API 中的 g_dbus_connection_call_sync)的 "parameter" 参数需要是一个元组。您提供了一个字典。将 k2 更改为元组变体即可。

错误告诉你明显的问题。 `call_sync` (C API 中的`g_dbus_connection_call_sync`)的“parameter”参数需要是一个元组。 您提供了一个字典。将 k2 更改为元组变量即可。
2015-03-09 22:14:35