【问题标题】:How include c++ binary in gstreamer plugin?如何在 gstreamer 插件中包含 c++ 二进制文件?
【发布时间】:2017-03-16 00:05:01
【问题描述】:

我正在尝试开发一个包含 KODO 线性网络编码的 gstreamer 插件。 Kodo 以二进制文件 c++ 的形式出现。在创建和填充 autogen.sh make 和 sudo make install 时没有检测到任何错误。当我运行 gst-inspect mykodoenc 时,结果是:

GStreamer-WARNING **: 加载插件失败 '/usr/local/lib/gstreamer-1.0/libgstmykodoenc.so': /usr/local/lib/gstreamer-1.0/libgstmykodoenc.so:未定义符号: _ZTVN10__cxxabiv117__class_type_infoE

如何在我的 gstreamer 插件中包含 c++ 二进制模块?

【问题讨论】:

    标签: c++ gstreamer


    【解决方案1】:

    我解决了在 makefile 的正确位置添加 -lstdc++ 的问题。

    libgstmykododec_la_SOURCES = gstmykododec.c gstmykododec.h kodoc.h
    

    libgstmykododec_la_CFLAGS = $(GST_CFLAGS) -I./kodolib/include

    libgstmykododec_la_LIBADD = $(GST_LIBS) -L./kodolib -lkodoc_static -lfifi -lcpuid -lstdc++

    libgstmykododec_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) -Wl,-Bdynamic -lm

    libgstmykododec_la_LIBTOOLFLAGS = --tag=disable-static

    【讨论】:

      【解决方案2】:

      运行 gst-inspect 时,二进制文件无法找到运行时所需的 c++ 符号,因此您需要将 LD_LIBRARY_PATH 设置为指向 libstdc++ 共享库。

      export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libstdc++.so.6
      

      libstdc++ 版本也应该与您提到的 kodo 二进制文件所期望的版本相同。您可以使用

      进行检查
      ldd <kodo_binary>
      

      还要检查其他缺少的依赖项,请使用

      ldd /usr/local/lib/gstreamer-1.0/libgstmykodoenc.so
      

      【讨论】:

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