需要记住的一件重要事情是,Vala实际上编译成C,然后输入GCC来构建一个可执行文件,您的编译器警告实际上是从
gcc
不
valac
轻微地
不同的
warning: assignment to âvoid * (*)(GListModel *, guint)â {aka âvoid * (*)(struct _GListModel *, unsigned int)â} from incompatible pointer type âGObject * (*)(GListModel *, guint)â {aka âstruct _GObject * (*)(struct _GListModel *, unsigned int)â}
assignment to âvoid * (*)(GListModel *, guint)â from incompatible type âGObject * (*)(GListModel *, guint)â
基本上是说GLib希望get_item返回
void *
这不是GObject,而是绑定中的一个bug,因此可以忽略
运行时附带运行时警告
(list:4511): GLib-GIO-CRITICAL **: 21:44:24.003: g_application_set_application_id: assertion 'application_id == NULL || g_application_id_is_valid (application_id)' failed
(list:4511): Gtk-CRITICAL **: 21:44:24.008: gtk_list_box_bind_model: assertion 'model == NULL || create_widget_func != NULL' failed
所以你有两个问题
-
HowDoI/ChooseApplicationID
帮助决定使用什么而不是“TestApp”,通常是
com.githost.me.App
-
你还没有真正设置一个方法来绑定模型,所以Gtk拒绝了它,确保你真的在那里传递了一个函数
但是这两个都不能告诉我们为什么你会得到SEGV
int
而GtkListBox期望
Object