FFmpeg libavcodec.a Xcode链接器问题 - 架构arm64的未定义符号

时间:2016-02-26 06:45:55

标签: ios xcode ffmpeg linker

我使用此脚本为iOS构建FFmpeg: https://github.com/kewlbear/FFmpeg-iOS-build-script

我为所有架构构建,然后我再次为arm64构建(作为我想要的拱门),我甚至使用其他构建脚本来构建适用于iOS的FFmpeg。但是,我一直遇到同样的问题:

Undefined symbols for architecture arm64:
  "_VTDecompressionSessionCreate", referenced from:
      _av_videotoolbox_default_init2 in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionDecodeFrame", referenced from:
      _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionInvalidate", referenced from:
      _av_videotoolbox_default_free in libavcodec.a(videotoolbox.o)
  "_VTDecompressionSessionWaitForAsynchronousFrames", referenced from:
      _videotoolbox_common_end_frame in libavcodec.a(videotoolbox.o)

我试过

  • 更改项目的“构建设置”中的体系结构设置
  • 将死代码剥离设置为否
  • 仔细检查了我的库/链接器搜索路径

请注意,所有链接器错误都来自同一个静态库(libavcodec.a)。这让我相信我错过了链接器专门针对这些符号所需的其他库。我添加了为FFmpeg构建提到的所有库 - 请参见下图:

snapshot of linked binaries/libraries

感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:6)

成功构建并摆脱显示的链接器错误所需的框架是VideoToolbox.framework

答案 1 :(得分:2)

我通过在构建阶段VideoToolbox.framework

中的链接库中添加VideoToolbox.framework解决了这个问题