У меня был код, скомпилированный в Ubuntu-10.04, и все, что я установил с ним. Я позволил synaptic обновить меня до 12.04, и теперь я получаю эти ошибки при компиляции программы c ++ Gstreamer. Код строит .so в Linux и кросс-компилирует .dll в Windows. Так реализуется тип домофона.
(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 (), запущенных в отдельных потоках.
Точка, в которой выдают эти ошибки, является первым вызовом любого из congtructor (они симметричны), где я объявил некоторые переменные GstXXXX (например, GstElement), но еще не запустил другой поток. Это требует вызова метода start ().
Я попытался использовать gtk_init (), как рекомендовано в одной записи на форуме. Я добавил все вызовы pkg-config в eclipse, но все равно говорится, что gtk_init () — неизвестный вызов. Очевидно, у меня не совсем так работает, но я не должен нужно это. Я не привык. Я закомментировал это прямо сейчас.
Итак, кто-то может подсказать, на что может быть причиной жалобы gtk / gst.
Я заметил, что g_type_init () устарела после glib версии 2.36 (я думаю, что они имели в виду glib). Итак, как я могу узнать, какая версия glib установлена?
Моя вина. У меня был звонок, который ссылался на еще не созданный gvariable. Тупой. Теперь все хорошо.
Вы, должно быть, установили старый glib, поскольку в более новой версии такого предупреждения нет. Найдите все библиотеки glib на вашем компьютере, переименуйте их одну за другой и соберите, после чего вы сможете узнать, какая из них сейчас работает для вашего проекта. Затем проверьте ваш вариант сборки и связанный с ним файл .pc в glib, чтобы узнать, как в вашей сборке задействована неправильная библиотека.
Предупреждение определено в gtype.c как
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL, \
«% s: Вы забыли вызвать g_type_init ()», \
G_STRLOC); \
Для других с этой ошибкой убедитесь, что вы вызываете gst_init.