C++ gstreamer、glib和gtk出现错误。

C++ gstreamer、glib和gtk出现错误。,c++,gtk,shared-libraries,gstreamer,C++,Gtk,Shared Libraries,Gstreamer,我有在Ubuntu-10.04上编译的代码,以及我用它安装的任何东西。我让突触升级我12.04,现在我在编译C++ GStuffER程序时会发现这些错误。该代码在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(

我有在Ubuntu-10.04上编译的代码,以及我用它安装的任何东西。我让突触升级我12.04,现在我在编译C++ GStuffER程序时会发现这些错误。该代码在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()方法中

引发这些错误的地方是第一次调用Orther Constructor(它们是对称的),我已经声明了一些GstXXXX(例如GstElement)变量,但还没有启动另一个线程。这需要调用start()方法

我尝试使用gtk_init()作为一个论坛条目。我向eclipse添加了所有pkg config调用,但它仍然说gtk_init()是一个未知调用。很明显,我不太需要它,但我不应该需要它。我不习惯。我现在已经把它注释掉了

那么,是否有人能提出引起gtk/gst投诉的原因


我注意到glib的2.36版之后,g_type_init()被弃用(我想他们指的是glib)。那么,我如何判断安装了哪个版本的glib呢?

这是罪过。我有一个调用引用了一个尚未创建的gvariable。哑的现在一切都好了。

您一定安装了一个旧的glib,因为在新版本中,没有这样的警告。找到您计算机上的所有glib库,逐个重命名它们并构建,然后您就可以找到现在为您的项目工作的库。然后检查您的构建选项和glib的相关.pc文件,以了解构建中如何涉及错误的库。 警告在gtype.c中定义为 g_log(g_log_域,g_log_级别,g_临界\ “%s:您忘记调用g_type_init()”\
G_STRLOC)\

对于出现此错误的其他人,请确保您正在调用gst\u init。

考虑到这一点,它的意义就更小了。我还有其他非常类似的gstreamer应用程序,它们都很好。我要用调试器进行一些窥探。我不明白你的问题:为什么你不按照错误建议添加
g\u type\u init()