GNOME Bugzilla – Bug 574844
gstreamermm build broken in example
Last modified: 2011-01-16 23:37:48 UTC
When trying to build gstreamermm from svn, with jhbuild, I see this error: main.cc: In function ‘int main(int, char**)’: main.cc:72: error: ‘OggDemux’ is not a member of ‘Gst’ main.cc:72: error: ‘OggDemux’ is not a member of ‘Gst’ main.cc:72: error: template argument 1 is invalid main.cc:72: error: invalid type in declaration before ‘=’ token main.cc:72: error: ‘Gst::OggDemux’ has not been declared main.cc:80: error: ‘Gst::VorbisDec’ has not been declared main.cc:107: error: no matching function for call to ‘Gst::Bin::add(int&)’ ../../gstreamer/gstreamermm/bin.h:225: note: candidates are: Glib::RefPtr<Gst::Bin> Gst::Bin::add(const Glib::RefPtr<Gst::Element>&) main.cc:119: error: no matching function for call to ‘Gst::FileSrc::link(int&)’ ../../gstreamer/gstreamermm/element.h:280: note: candidates are: Glib::RefPtr<Gst::Element> Gst::Element::link(const Glib::RefPtr<Gst::Element>&) main.cc:124: error: base operand of ‘->’ is not a pointer make[3]: *** [main.o] Error 1 make[3]: Leaving directory `/home/murrayc/checkouts/gnome224/gnomemm/gstreamermm/trunk/examples/ogg_player_gtkmm'
When I installed it anyway, I alo saw these linker errors when trying to build David King's vidrot application: /opt/gnome224/lib/libgstreamerbasemm-0.10.so: undefined reference to `Gst::Clock::get_resolution_vfunc()' /opt/gnome224/lib/libgstreamerbasemm-0.10.so: undefined reference to `Gst::Clock::get_internal_time_vfunc()'
Sorry. Ignore that last comment. That problem is gone now.
I think this may be because the oggdemux plug-in is not available on the build machine (to confirm run 'gst-inspect oggdemux'). The example uses it (Gst::OggDemux) and if the plug-in is not available on the build system it is not included in the build.
It more looks like none of the plug-ins are available because Gst::FileSrc is a core plug-in (in the main gstreamer module). The others (Gst::OggDemux and Gst::VorbisDec) are found in the gst-base-plugins module.
What makes you think that FileSrc is not available?
gst-inspect oggdemux indeed shows that it is not in my gstreamer. Do you know what I need to install before rebuilding gstreamer to have this element? However, the build should not proceed if some of the source code could not be generated, at least when building from svn (maintainer mode).
> What makes you think that FileSrc is not available? > I'm wrong about that. The part of the error that says: main.cc:119: error: no matching function for call to ‘Gst::FileSrc::link(int&)’ is not related to Gst::FileSrc, but instead to Gst::OggDemux (the parser) so the error, it seems, is with the gst-plugins-base (above gst-base-plugins is incorrect) installation. > gst-inspect oggdemux indeed shows that it is not in my gstreamer. Do you know > what I need to install before rebuilding gstreamer to have this element? On this system, making sure that the gst-plugins-base module is compiled and installed worked for me. There are some plug-ins that gstreamermm includes (the Gio* plug-ins) that require that an '--enable-experimental' option be passed to gst-plugins-base when configuring. That's the only additional option that I pass to gst-plugins-base. > However, the build should not proceed if some of the source code could not be > generated, at least when building from svn (maintainer mode). Okay. I'll look into this.
Created attachment 130548 [details] [review] Patch to stop build if plug-in does not exist in maintainer mode This patch stops the build if a plug-in does not exist in maintainer mode. Would this fix things for you?
Yes, that seems good. Let's try that. Thanks. By the way, the correct spelling is "existence".
Committed with spelling fix (I should have turned spelling on in vim as I tend to do when I prepare the ChangeLog). Thanks.
Also, my Spanish should have helped me because it is written (and pronounced as written) 'existencia'. If I had taken the time to repeat the word in Spanish I might have known that the second 'e' is also used in English and not an 'a'. :-)