GStreamer:在C++中与GST_OBJECT的斗争

whitzsjs  于 2023-03-05  发布在  其他
关注(0)|答案(3)|浏览(147)

最近几天我开始研究GStreamer1.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++,所以我不知道当编译器失败。
我使用的简短代码片段:
x1米11米1x
#include <gst/gst.h>
using namespace std;
int main(int argc, char **argv) {地理要素 * 我的第一个要素;

gst_init(&argc, &argv);

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

if(!myFirstElement)
    return -1;

gst_object_unref(GST_OBJECT(myFirstElement));

return 0;

}`

twh00eeo

twh00eeo1#

如果我编译

#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`

一切正常。可能是您的设置有问题...

7lrncoxx

7lrncoxx2#

您的问题可能是库的链接顺序。链接库时,顺序实际上很重要。例如,如果libA需要libB中的符号,则需要按-lA -lB的顺序链接。如果颠倒顺序,则链接将失败。
我的猜测是,如果在gstreamer之前链接glib,那么它将失败,因为gstreamer依赖于glib的符号。

raogr8fs

raogr8fs3#

g_type_check_instance_cast包含在库gobject-2.0中。因此,请确保该库已链接。
希望能帮上忙

相关问题