C++Ubuntu.使用FFMPEG库编译的多个未定义引用
C++ Ubuntu. Multiple undefined references compiling with FFMPEG libs
我在Ubuntu 12.10上安装了FFMPEG库和标头,如下所述。
在我的C++应用程序中,当我编译(gcc(时使用FFMPEG,我得到的是:
/usr/local/lib/libavcodec.a(libfaac.o(:函数中
Faac_encode_frame': /root/ffmpeg/libavcodec/libfaac.c:179: undefined reference to
faacEncEncode'/usr/local/lib/libavcodec.a(libfaac.o(:在函数Faac_encode_close': /root/ffmpeg/libavcodec/libfaac.c:52: undefined reference to
faacEncClose中/usr/local/lib/libavcodec.a(libfaac.o(:函数中Faac_encode_init': /root/ffmpeg/libavcodec/libfaac.c:78: undefined reference to
faacEncOpen'/root/ffmpeg/libavcodec/libfaac.c:88:未定义对faacEncGetCurrentConfiguration' /root/ffmpeg/libavcodec/libfaac.c:139: undefined reference to
faacEncGetDecoderSpecificInfo'/root/ffmpeg/libavcodec/libfaac.c:153:未定义对faacEncSetConfiguration' /usr/local/lib/libavcodec.a(libfdk-aacenc.o): In function
aac_encode_close'的引用:/root/ffmpeg/libavcodec/libfdk aacen.c:99:未定义对aacEncClose' /usr/local/lib/libavcodec.a(libfdk-aacenc.o): In function
aac_encode_frame'的引用:/root/ffmpeg/libavcodec/libfdk aacenc.c:344:未定义对aacEncEncode' /usr/local/lib/libavcodec.a(libfdk-aacenc.o): In function
aac_encode_init'的引用:/root/ffmpeg/libavcodec/libfdk aacenc.c:116:未定义对aacEncOpen' /root/ffmpeg/libavcodec/libfdk-aacenc.c:125: undefined reference to
aacEncoder_SetParam'/root/ffmpeg/libavcodec/libfdk aacenc.c:132:对aacEncoder_SetParam' /root/ffmpeg/libavcodec/libfdk-aacenc.c:140: undefined reference to
aacEncoder_SetParam'/root/ffmpeg/libavcodec/libfdk aacenc.c:160的未定义引用:未定义对aacEncoder_SetParam' /root/ffmpeg/libavcodec/libfdk-aacenc.c:167: undefined reference to
aacEncoder_SetParam的引用'/usr/local/lib/libavcodec.a(libfdk-aacenc.o(:/root/ffmpeg/libavcodec/libfdk-aecenc.c:185:对aacEncoder_SetParam' follow /usr/local/lib/libavcodec.a(libfdk-aacenc.o): In function
aac_encode_init':/root/ffmpeg/libavcodec/libfdk aacenc.c:263的更多未定义引用:对aacEncEncode' /root/ffmpeg/libavcodec/libfdk-aacenc.c:269: undefined reference to
aacEncInfo的未定义引用/usr/local/lib/libavcodec.a(libmp3lame.o(:In函数mp3lame_encode_frame': /root/ffmpeg/libavcodec/libmp3lame.c:204: undefined reference to
lame_encode_buffer_foat'/root/ffmpeg/libavcodec/libmp3lame.c:188:对的未定义引用lame_encode_buffer' /root/ffmpeg/libavcodec/libmp3lame.c:191: undefined reference to
lame_encode_buffer_int'/root/ffmpeg/libavcodec/libmp3lame.c:210:对的未定义引用lame_encode_flush' /usr/local/lib/libavcodec.a(libmp3lame.o): In function
mp3lame_encode_close':/root/ffmpeg/libavcodec/libmp3lame.c:88:对的未定义引用lame_close' /usr/local/lib/libavcodec.a(libmp3lame.o): In function
mp3lame_encode_init':/root/ffmpeg/libavcodec/libmp3lame.c:100:对lame_init' /root/ffmpeg/libavcodec/libmp3lame.c:104: undefined reference to
lame_set_num_channels'/root/ffmpeg/libavcodec/libmp3lame.c:105的未定义引用:对lame_set_mode' /root/ffmpeg/libavcodec/libmp3lame.c:108: undefined reference to
lame_set_in_samplerate'/root/ffmpeg/libavcodec/libmp3lame.c:109的未定义引用:对lame_set_out_samplerate' /root/ffmpeg/libavcodec/libmp3lame.c:113: undefined reference to
lame_set_quality'/root/ffmpeg/libavcodec/libmp3lame.c:115的未定义引用:未定义引用lame_set_quality' /root/ffmpeg/libavcodec/libmp3lame.c:119: undefined reference to
lame_set_VBR'/root/ffmpeg/libavcodec/libmp3lame.c:120:未定义引用lame_set_VBR_quality' /root/ffmpeg/libavcodec/libmp3lame.c:123: undefined reference to
lame_set_brate'/root/ffmpeg/libavcodec/libmp3lame.c:127:未定义参考lame_set_bWriteVbrTag' /root/ffmpeg/libavcodec/libmp3lame.c:130: undefined reference to
lame_set_disable_reservoir'/root/ffmpeg/libavcodec/libmp3lame.c:133:对lame_init_params' /root/ffmpeg/libavcodec/libmp3lame.c:139: undefined reference to
lame_get_encoder_delay'/root/ffmpeg/libavcodec/libmp3lame.c:142的未定义引用:未定义对lame_get_framesize' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_wb_decode_close'的引用:/root/ffmpeg/libavcodec/libopencore amr.c:363:对D_IF_exit' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_decode_frame的未定义引用':/root/ffmpeg/libavcodec/libopencore amr.c:122:对Decoder_Interface_Decode' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_wb_decode_frame的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:352:未定义对D_IF_decode' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_encode_frame'的引用:/root/ffmpeg/libavcodec/libopencore amr.c:267:对Encoder_Interface_Encode' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_wb_decode_init'的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:318:对D_IF_init' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_encode_close'的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:222:对Encoder_Interface_exit' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_decode_close'的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:86:对Decoder_Interface_exit' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_encode_init'的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:205:对Encoder_Interface_init' /usr/local/lib/libavcodec.a(libopencore-amr.o): In function
amr_nb_decode_init'的未定义引用:/root/ffmpeg/libavcodec/libopencore amr.c:73:对Decoder_Interface_init' /usr/local/lib/libavcodec.a(libspeexdec.o): In function
libspeex_decode_frame的未定义引用:/root/ffmpeg/libavcodec/libspeexdec.c:139:对speex_bits_remaining' /root/ffmpeg/libavcodec/libspeexdec.c:147: undefined reference to
speex_bits_read_from'/root/ffmpeg/libavcodec/libspeexdec的未定义引用。c:152:对speex_decode_int' /root/ffmpeg/libavcodec/libspeexdec.c:140: undefined reference to
speex_bits_peek_sunsigned'/root/ffmpeg/libavcodec/libspeexdec的未定义引用。c:158:未定义对speex_decode_stereo_int' /usr/local/lib/libavcodec.a(libspeexdec.o): In function
libspeex_decode_close'的引用:/root/ffmpeg/libavcodec/libspeexdec.c:169:对speex_bits_destroy' /root/ffmpeg/libavcodec/libspeexdec.c:170: undefined reference to
speex_decoder_destroy'/usr/local/lib/libavcodec.a(libspeexdec.o(的未定义引用:In函数libspeex_decode_init': /root/ffmpeg/libavcodec/libspeexdec.c:48: undefined reference to
speex_packet_to_header'/root/ffmpeg/libavcodec/libspeexdec.c:67:对speex_header_free' /root/ffmpeg/libavcodec/libspeexdec.c:82: undefined reference to
speex_lib_get_mode'/root/ffmpeg/libavcodec/libspeexdec.c:100的未定义引用:对speex_bits_init' /root/ffmpeg/libavcodec/libspeexdec.c:101: undefined reference to
speex_decoder_init'/root/ffmpeg/libavcodec/libspeexdec.c:110的未定义引用:未定义对speex_std_stereo_request_handler' /root/ffmpeg/libavcodec/libspeexdec.c:113: undefined reference to
specex_decoder_ctl'/root/ffmpeg/libavcodec/libspecexdec的引用。c:43:未定义对"specex_nb_mode"的引用
等等。。。。
当我编译时,我链接到这些库:
-lfaac-lavformat-lavcodec-lavutil-lavfilter-lswscale
问题出在哪里?
我成功地编译了。对于感兴趣的人:
首先,我禁用了一些模块(我并没有真正使用(:
/configure--enable gpl--enable libass--enable lib faac--enable libfdk aac--enable-libmp3lame\--禁用libopencore amrnb--禁用libopen core amrwb--禁用librspeex--启用-librtmp--禁用libtheora\--enable libvorbis--enable libvpx--enable-x11grab--enable-libx264--enable nonfree--enable-version 3
然后我按以下顺序链接了其余的依赖项:
-lavformat-lavcodec-lfaac-lmp3lame-lfdk-aac-lvpx-lx264-lavdevice-lyasm-lavotil-lswscale-lrtmp-lvorbisec-lva
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用