我有在Ubuntu-10.04上编译的代码,以及我所安装的任何东西。我让synaptic升级了12.04,现在我在编译c++ Gstreamer程序时得到了这些错误。代码在linux上构建一个.so,并在windows上交叉编译一个.dll。so实现了一种对讲机的类型。
(process:18707): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.32.3
/./gobject/gtype.c:2722: You forgot to call g_type_init()
(process:18707): GLib-CRITICAL **: g_once_init_leave: assertion
`result != 0' failed
(process:18707): GLib-GObject-CRITICAL **: /build/buildd/glib2.0-2.32.3
/./gobject/gtype.c:2722: You forgot to call g_type_init()
(process:18707): GLib-CRITICAL **: g_once_init_leave: assertion
`result != 0' failed
(process:18707): GStreamer-CRITICAL **: gst_element_get_state: assertion
`GST_IS_ELEMENT (element)' failed在我的代码中,我有一个类,它包含接收管道和发送方管道的另一个类。实际的Gstreamer内容位于以单独线程启动的run()方法中。
抛出这些错误的要点是第一次调用任意一个同意者(它们是对称的),其中我已经声明了一些GstXXXX (例如GstElement)变量,但还没有启动另一个线程。这需要调用start()方法。
我尝试使用gtk_init()作为论坛条目的建议。我向eclipse添加了所有pkg-config调用,但仍然说gtk_init()是一个未知的调用。很明显,我不太会那么做,但是我不应该需要它。我以前不是这样的。我现在就把它评论掉了。
那么,有人能提出什么可能导致gtk/gst抱怨。
我注意到,g_type_init()是在glib的2.36版本(我认为它们的意思是glib)之后被废弃的。那么,我如何知道安装了哪个版本的glib呢?
发布于 2013-03-07 12:58:49
梅尔帕。我接到了一个电话,它引用了一个尚未创建的变量。太傻了。现在一切都好了。
发布于 2013-04-19 08:54:59
您一定安装了一个旧的glib,因为在较新的版本中,没有这样的警告。在您的计算机上找到所有的glib库,将它们逐一重命名并构建,然后您就可以知道哪个库正在为您的项目工作。然后检查构建选项和相关的.pc文件glib,以找出构建过程中涉及到的错误库。在gtype.c中,警告被定义为g_log (G_LOG_DOMAIN,G_LOG_LEVEL_CRITICAL,\ "%s:您忘记调用g_type_init()",\ G_STRLOC);\
发布于 2013-08-05 12:33:19
对于有此错误的其他人,请确保您正在调用gst_init。
https://stackoverflow.com/questions/15260100
复制相似问题