我有在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