我正在尝试开发一个包含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:undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE
如何在我的gstreamer插件中包含c ++二进制模块?
答案 0 :(得分:0)
运行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
答案 1 :(得分:0)
我解决了在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