在我当前的项目中,我们需要在同一个项目中使用 live555 和 ffmpeg 库。我们可以毫无问题地为这两个项目构建并运行示例,但是当将这两个项目合并到项目中时,遇到了以下编译器错误:
Undefined symbols for architecture armv7:
"av_free_packet(AVPacket*)", referenced from:
-[MyRtspClient readFFmpegAudioFrameAndDecode] in MyRtspClient.o
"av_read_frame(AVFormatContext*, AVPacket*)", referenced from:
-[MyRtspClient readFFmpegAudioFrameAndDecode] in MyRtspClient.o
"av_strerror(int, char*, unsigned long)", referenced from:
-[MyRtspClient readFFmpegAudioFrameAndDecode] in MyRtspClient.o
"av_dict_set(AVDictionary**, char const*, char const*, int)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_init_packet(AVPacket*)", referenced from:
-[MyRtspClient readFFmpegAudioFrameAndDecode] in MyRtspClient.o
"avcodec_register_all()", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_register_all()", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_log_set_level(int)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_log(void*, int, char const*, ...)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avformat_alloc_context()", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avformat_network_deinit()", referenced from:
-[MyRtspClient destroyFFmpegAudioStream] in MyRtspClient.o
"avformat_open_input(AVFormatContext**, char const*, AVInputFormat*, AVDictionary**)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avformat_find_stream_info(AVFormatContext*, AVDictionary**)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_find_best_stream(AVFormatContext*, AVMediaType, int, int, AVCodec**, int)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_dump_format(AVFormatContext*, int, char const*, int)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avcodec_open2(AVCodecContext*, AVCodec const*, AVDictionary**)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avformat_network_init()", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"av_dict_free(AVDictionary**)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
"avcodec_find_decoder(AVCodecID)", referenced from:
-[MyRtspClient initFFmpegAudioStream] in MyRtspClient.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我应该包含所有必需的文件,所以我对此有点困惑,欢迎任何建议,谢谢。
是的,你可以非常成功地将它们结合起来。我发现最好的方法是创建一个工作区, 合并 ffmpeg 和 live555 库。
这是一个例子。