我使用QtCreator和QT 5.2.1在Ubuntu 14.04 32bit下制作了QT应用程序。我使用了QT框架的二进制分发。我按照关于部署QT应用程序的所有教程和Ubuntu 14.04的全新安装,一切似乎都没问题。问题来自Ubuntu 12.04。当我尝试运行我的应用程序时,我得到了那些Glib错误。
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
(进程:11884):GLib-CRITICAL **:g_once_init_leave:断言`结果!= 0'失败
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
(进程:11884):GLib-GObject-CRITICAL **:g_type_add_interface_static:断言`G_TYPE_IS_INSTANTIATABLE(instance_type)'失败
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
(进程:11884):GLib-GObject-CRITICAL **:g_type_interface_add_prerequisite:断言`G_TYPE_IS_INTERFACE(interface_type)'失败
(进程:11884):GLib-CRITICAL **:g_once_init_leave:断言`结果!= 0'失败
(进程:11884):GLib-GObject-CRITICAL **:g_type_add_interface_static:断言`G_TYPE_IS_INSTANTIATABLE(instance_type)'失败
(进程:11884):GLib-GObject-CRITICAL **:/build/buildd/glib2.0-2.32.4/./gobject/gtype.c:2722:你忘了调用g_type_init()
任何人都可以帮我解决这些问题吗? 感谢
EDIT1: 该应用程序使用sudo运行,没有错误,但它不显示图标(libappindicator1)
答案 0 :(得分:2)
错误消息告诉您问题所在:
GLib-GObject-CRITICAL... You forgot to call g_type_init()
在2.36之前的the GLib library版本中,应用程序需要调用g_type_init
函数来初始化库GObject type system,显然您的程序没有这样做。 (注意它可能是你的程序构建的库,它使用的是GLib,而不是你的实际代码。)据推测,Ubuntu 12附带的旧版本的GLib比Ubuntu 14还要多,这说明了它们之间的行为差异。
尝试在main
功能开始时将此代码添加到您的程序中:
if (glib_check_version (2, 36, 0) != NULL)
g_type_init ();
如果文件尚未存在,您可能还需要在文件顶部添加此包含:
#include <glib-object.h>
请注意,如果您针对最新版本的GLib进行构建,则代码中存在g_type_init
可能会触发编译器发出警告。如果这是一个问题,您可以添加
#define GLIB_DISABLE_DEPRECATION_WARNINGS
在代码的顶部(包括GLib标题之前)以防止这种情况发生。