我正在尝试通过GData.ContactsContact.get_photo()检索联系人照片,该照片具有以下签名:
get_photo(
GDataContactsContact *self,
GDataContactsService *service,
gsize *length, (out caller-allocates)
gchar **content_type, (out caller-allocates)
GCancellable *cancellable,
GError *error
)
但是,如果我只是将变量声明为"来电分配"对于此(例如。let length;
)或实例化长度的新G_TYPE,结果始终为:
Gjs-Message: JS ERROR: Unsupported type guint64 for (out caller-allocates)
我只能找到similar problems的几个旧的示例,它们都引用了注释错误:
似乎该方法未正确注释。它应该是(out caller-allocates)(数组长度=长度)。
这是一个内省错误,我可以解决和/或提交错误,或者我误解了#34;调用者分配"在Javascript中使用?
答案 0 :(得分:2)
你可以通过使用另一个函数解决它,但似乎这个函数也没有正确注释。 length
参数应注释为返回值的长度。请在https://bugzilla.gnome.org为GData提交错误报告。
它应该工作的方式是不传入out参数(即使是那些标记为C代码的caller-allocation的参数);一切都发生在引擎盖下。并且,长度参数仅在内部使用,以便设置它们引用的数组。所以调用函数的预期方法是:
let [photoBytes, contentType] = contact.get_photo(service, cancellable);