我有在Ubuntu-10.04上编译的代码以及我用它安装的任何代码。我让突触升级我12.04,现在我编译C++ Gstreamer程序时出现这些错误。该代码在Linux上构建.so,并在Windows上交叉编译.dll。这样实现了一种对讲机。gstreamer,glib和gtk的错误。
(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()方法。
引发这些错误的是第一次调用consgtructor(它们是对称的),我声明了一些GstXXXX(例如GstElement)变量,但尚未启动另一个线程。这需要调用start()方法。
我尝试使用gtk_init()作为建议的一个论坛条目。我将所有pkg-config调用添加到eclipse中,但仍然说gtk_init()是未知的调用。显然我不太会有那个工作,但我不应该需要它。我不习惯。我现在已经注释掉了。
那么,有人可以建议什么可能会导致gtk/gst抱怨。
我注意到g_type_init()在glib的版本2.36(我认为它们意味着glib)之后被弃用。那么,我怎么知道哪个版本的glib已经安装?
思考这个问题,它就更没有意义了。我还有其他非常相似的gstreamer应用程序,它们可以很好地工作。我打算用调试器进行一些窥探。 – 2013-03-07 12:35:41
我不明白你的问题:为什么你只是不按照错误提示添加'g_type_init()'? – ntd 2013-03-07 12:44:46