1

我试图针对 valac (.28) 和 libgee (1.0)编译 libfriends ( source )。我专门针对 Ubuntu-16.04 堆栈编译了这些。

但我收到以下错误

entry.vala:397.38-397.38: warning: if-statement without body if (_selected != value); ^ entry.vala:172.52-172.86: error: Argument 1: Cannot convert from `GLib.TypeClass' to `GLib.ObjectClass' binding_set = Gtk.BindingSet.by_class (typeof (InputTextView).class_ref ());

我真的没有发现代码有什么问题。任何想法?

整个构建日志在这里:https ://launchpadlibrarian.net/263631082/buildlog_ubuntu-xenial-i386.libfriends_0.1.2+14.10.20140709+201606051415~ubuntu16.04.1_BUILDING.txt.gz

4

1 回答 1

1

我刚刚检查了一下,它可以用 编译valac-0.18,但不能用valac-0.28.

valac因此,在这种情况下进行更严格类型检查的那些版本之间肯定存在变化。

GLib.TypeClass(really GTypeClass in C)是(really GObjectClass in C)的父类GLib.ObjectClass

所以编译器在没有强制转换的情况下不允许这样做是正确的。我不知道在这种情况下强制转换是否正确,但它使代码编译:

binding_set = Gtk.BindingSet.by_class ((ObjectClass) typeof (InputTextView).class_ref ())

另请参阅 valadoc 以了解GObjectClass在示例代码中进行类似类型转换的位置:

http://valadoc.org/#!api=gobject-2.0/GLib.ObjectClass

于 2016-06-05T18:25:56.763 回答