[vox-tech] inline keyword solves "undefined reference" issue

Hai Yi yihai2004 at gmail.com
Tue Jun 8 11:40:59 PDT 2010


Thanks Jeff. However, the header file of those C routines are included in
ffmpegmgr.h, which is in turn included by ffmpegmgr.cpp.

The "undefined reference " normally indicates that the functions's
definitions are not found, and it takes place when doing the linker. The
libraries, libavcodec, etc, have been specified from the g++ command line,
and seems to work - only that I need to make the encapulated member function
in ffmpegmgr.cpp inline to eliminate the linker error:

inline void FFMpegMgr::new_video_stream(AVFormatContext *oc)
{
   ...
    st = av_new_stream(oc, oc->nb_streams);
   ...
}

Also, the lib that I specified is *.a, will it be different if the lib is
*.so ?

Thanks,
Hai


On Mon, Jun 7, 2010 at 1:26 AM, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>wrote:

> Seems more likely that you haven't included the declarations for the C
> routines in your cpp file. Would need to see more context to diagnose.
>
> "Hai Yi" <yihai2004 at gmail.com> wrote:
>
> >Hello all:
> >
> >I created a class FFMpegMgr and a method init(); inside init() I just put
> >three ffmpeg api there:
> >avcodec_register_all();
> >avdevice_register_all();
> > av_register_all();
> >
> >The source file ffmpegmgr.cpp look like this:
> >
> > void FFMpegMgr::init() {
> >    avcodec_register_all();
> >    avdevice_register_all();
> >    av_register_all();
> >
> >}
> >
> >Now I got a "undefined reference to avcodec_register_all" error.
> >
> >if I put that body in the class declaration or add a "inline" keyword,
> that
> >problem was gone and the compilation succeeded.
> >
> >question is, do those three functions, which are C functions defined in
> >avcodec.h,  have to be used only in the inline functions in C++?
> >
> >Sorry if it appear naive - I've been out of touch with C/C++ for a while.
> >
> >Thanks!
> >Hai
> >_______________________________________________
> >vox-tech mailing list
> >vox-tech at lists.lugod.org
> >http://lists.lugod.org/mailman/listinfo/vox-tech
>
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live
> Go...
>                                      Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.lugod.org/pipermail/vox-tech/attachments/20100608/94e5fe46/attachment.htm 


More information about the vox-tech mailing list