[FFmpeg-user] undefined reference to av_frame_alloc/free

Jason Blum jason.j.blum at gmail.com
Wed May 28 06:03:41 CEST 2014


Hello,

I am working on a catkin-built ROS c++ project. I am trying to link to
whatever FFMPEG library is necessary to use the new av_frame_alloc( ) and
av_frame_free( ) functions. The online documentation says it would be
avutil/frame.h, but I still get undefined reference linking errors.

I am also linking to avcodec, avformat, and swscale, all of which seem to
link just fine.

This is my ffmpeg version:
ffmpeg version 2.2.git Copyright (c) 2000-2014 the FFmpeg developers
  built on May  2 2014 21:57:13 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
  configuration: --disable-stripping --enable-shared
  libavutil      52. 66.101 / 52. 66.101
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 34.100 / 55. 34.100
  libavdevice    55. 11.100 / 55. 11.100
  libavfilter     4.  3.100 /  4.  3.100
  libswscale      2.  5.101 /  2.  5.101
  libswresample   0. 18.100 /  0. 18.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options]
outfile}...

These are the compile errors:
CMakeFiles/h264_decoder_node.dir/src/h264_decoder.cpp.o: In function
`h264_Decoder::h264_Decoder()':
h264_decoder.cpp:(.text+0x19c): undefined reference to `av_frame_alloc'
h264_decoder.cpp:(.text+0x1ac): undefined reference to `av_frame_alloc'
CMakeFiles/h264_decoder_node.dir/src/h264_decoder.cpp.o: In function
`h264_Decoder::~h264_Decoder()':
h264_decoder.cpp:(.text+0x32e): undefined reference to `av_frame_free'
h264_decoder.cpp:(.text+0x340): undefined reference to `av_frame_free'
collect2: error: ld returned 1 exit status
make[2]: ***
[/home/jason/ROS/ARDrone/devel/lib/ardrone_2/h264_decoder_node] Error 1
make[1]: *** [ardrone_2/CMakeFiles/h264_decoder_node.dir/all] Error 2
make: *** [all] Error 2
Invoking "make" failed

The headers I am #include'ing:
extern "C" {
    #include <libavcodec/avcodec.h>
    #include <libswscale/swscale.h>
    #include <libavformat/avformat.h>
    #include <libavutil/avutil.h>
    #include <libavutil/frame.h>
}

What am I missing?

Thanks,
Jason


More information about the ffmpeg-user mailing list