Q:Windows下编译ffmpeg+librtmp,出现如下无法链接问题。
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_SetupURL,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Connect,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Socket,该符号在函数 rtmp_get_file_handle 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_ConnectStream,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Init,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Close,该符号在函数 rtmp_close 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_EnableWrite,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Pause,该符号在函数 rtmp_read_pause 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_SendSeek,该符号在函数 rtmp_read_seek 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Read,该符号在函数 rtmp_read 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_Write,该符号在函数 rtmp_write 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_LogSetCallback,该符号在函数 rtmp_open 中被引用
librtmp.o : error LNK2019: 无法解析的外部符号 RTMP_LogSetLevel,该符号在函数 rtmp_open 中被引用libavformat/avformat-58.dll : fatal error LNK1120: 13 个无法解析的外部命令
make: *** [ffbuild/library.mak:103:libavformat/avformat-58.dll] 错误 96
【解决方案一】修改此ffbuild目录下config.mak、config.sh文件,对于extralibs_avformat变量手动增加库链接方式:“-libpath:D:/msys64/usr/local/lib librtmp.lib”。PS:虽简单粗暴,但行知有效。


【解决方案二】 ----> 此方法在msys2环境下验证未成功,待后续有空再研究下啥原因 @^^@
通过 extra-cflags 指定第三方头文件路径。
通过 extra-ldflags 指定第三方库链接路径。
PS:指定第三方链接库路径时,不同编译器环境下是有差异,这点需要特别注意!!
Windows环境下使用-libpath来指定链接路径:--extra-ldflags=-libpath:D:/msys64/usr/local/lib
linux环境下使用-L来指定链接路径:--extra-ldflags=-L /usr/local/lib
./configure --prefix=./build --toolchain=msvc --arch=x86_64 \
--enable-shared --disable-static --enable-avresample \
--enable-libx264 --enable-gpl --enable-librtmp --enable-nonfree \
--extra-cflags="-I D:/msys64/usr/local/include" \
--extra-ldflags="-libpath:D:/msys64/usr/local/lib"
网友评论