GStreamer: борьба с GST_OBJECT в C ++

0

Я начал заглядывать в GStreamer 1.0 за последние дни. Первые примеры работали нормально, но теперь я нахожусь в точке, где мне нужен GST_OBJECT(obj).
Когда я пытаюсь скомпилировать пример, используя его, компилятор outputs undefined reference to symbol 'g_type_check_instance_cast'. Я использую Eclipse Luna для компиляции. Моя ОС - Ubuntu 14.04, в качестве компилятора я использую GCC. В Eclipse я добавил
/usr/lib/x86_64-linux-gnu/glib-2.0/include
/usr/include/gstreamer-1.0
/usr/include/glib-2.0
к путям включения компилятора C++ и
glib-2.0
gstnet-1.0
gstbase-1.0
gstcheck-1.0
gstreamer-1.0
gstcontroller-1.0
в библиотеки компоновщиков GCC C++. Я новичок в добавлении внешних библиотек в C++, поэтому я понятия не имею, когда компилятор терпит неудачу.

Короткие фрагменты кода, которые я использовал:
#include <iostream>
#include <gst/gst.h>

using namespace std;

int main(int argc, char **argv) { GstElement * myFirstElement;

gst_init(&argc, &argv);

myFirstElement = gst_element_factory_make("fakesrc", "source");

if(!myFirstElement)
    return -1;

gst_object_unref(GST_OBJECT(myFirstElement));

return 0;

}"

  • 0
    Не могли бы вы включить часть кода, которая вызывает GST_OBJECT (obj)?
Теги:
gstreamer

2 ответа

0

Ваша проблема может быть упорядочением библиотек. При связывании библиотек заказ действительно имеет значение. Например, если libA требует символа из libB, тогда вам нужно связать его в порядке -lA -lB. Если вы отмените заказ, ссылка не завершится.

Я предполагаю, что если вы связали glib перед gstreamer, тогда он потерпит неудачу, поскольку gstreamer зависит от символов из glib.

  • 0
    Что ж, если требуемый libgobject-2.0 вообще не добавлен к компоновщику, то компоновка не будет выполнена. Это не похоже на проблему заказа для меня.
0

Ну, если я скомпилирую

#include <iostream>
#include <gst/gst.h>

using namespace std;

int main(int argc, char **argv)
{
  GstElement *myFirstElement;

  gst_init(&argc, &argv);

  myFirstElement = gst_element_factory_make("fakesrc", "source");

  if(!myFirstElement)
      return -1;

  gst_object_unref(GST_OBJECT(myFirstElement));

  return 0;
}

с помощью

g++ -o main main.cc  'pkg-config --cflags --libs gstreamer-1.0'

все работает нормально. Возможно, проблема с вашей настройкой...

  • 0
    Хорошо, таким образом, это также работает на моей машине, но я хотел бы сделать компиляцию непосредственно в Eclipse. Так что, похоже, моя конфигурация не верна. Любые идеи, что я должен добавить, чтобы запустить его?
  • 0
    Итак, что pkg-config дает вам включения (в моей системе "pkg-config --cflags gstreamer-1.0" -> "-pthread -I / usr / include / gstreamer-1.0 -I / usr / include / glib-2.0 -I / usr / lib / glib-2.0 / include ") и флаги библиотеки (с использованием опции" --libs "), которые вы должны добавить. Один хакерский способ - вставить это в затмение. Возможно, вы захотите прочитать этот « help.eclipse.org/luna/… » по теме
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню