【问题标题】:Errors with gstreamer, glib and gtk.gstreamer、glib 和 gtk 的错误。
【发布时间】:2013-08-05 20:33:19
【问题描述】:

我有在 Ubuntu-10.04 上编译的代码以及我安装的任何代码。我让突触升级了我 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() 作为一个论坛条目的建议。我将所有 pkg​​-config 调用添加到 eclipse,但它仍然说 gtk_init() 是一个未知调用。显然,我并没有这样的工作,但我不应该需要它。我不习惯。我现在把它注释掉了。

那么,有人可以提出可能导致 gtk/gst 抱怨的原因吗?

我注意到 g_type_init() 在 glib 2.36 版之后被弃用(我认为他们的意思是 glib)。那么,如何知道安装了哪个版本的 glib?

【问题讨论】:

  • 想想这个,就更没意思了。我还有其他非常相似的 gstreamer 应用程序可以编译得很好。我要去用调试器做一些窥探。
  • 我不明白你的问题:为什么你不按照错误的建议添加g_type_init()?

标签: c++ gtk shared-libraries gstreamer


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您必须安装了旧的 glib,因为在较新的版本中,没有这样的警告。在你的电脑上找到所有的 glib 库,一个一个地重命名并构建,然后你就可以找出哪个现在在你的项目中工作了。然后检查您的构建选项和 glib 的相关 .pc 文件,以找出错误的库是如何参与您的构建的。 警告在 gtype.c 中定义为 g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \ "%s: 你忘记调用 g_type_init()", \ G_STRLOC); \

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多