美文网首页iOS开发进阶
在Xcode 9下AVFoundation框架编译不过的问题解决

在Xcode 9下AVFoundation框架编译不过的问题解决

作者: 敲伟先森 | 来源:发表于2017-10-26 12:24 被阅读0次

背景

前段时间苹果推出了Xcode 9正式版,兴冲冲地下载下来体验,感觉编辑器颜值升高了很多,整体运行也很稳定,但是很快发现一个问题,公司的库工程在Xcode 9下编译不过,到时候在Xcode 8.3.3下缺能编译通过,后来因为赶项目,没有过多的去看,前几天闲下来了,正式去搞这个编译不过的问题。

原因

废话不多说,过程也不描述。

其实很简单,错误就指向AVFoundation框架下面声明在AVMediaFormat.h下一个枚举:

typedef NSString* AVMediaType NS_EXTENSIBLE_STRING_ENUM;

然而,在FFmpeg 3.x版本下,avcodec头文件中也声明了一个枚举类型:

enum AVMediaType...

这就是导致这个编译错误的罪魁祸首。

解决办法

还能怎么办,AVFoundation改不了,就只能改FFmpeg的源码咯。

把FFmpeg的源码拖进编辑器,全局搜索AVMediaType,加个前缀就好。这里有个地方要注意,FFmpeg源码中有一个avfoundation.m的文件,里面的AVMediaType是引用AVFoundation框架下的AVMediaType枚举,是不能更改的,不然编译修改后FFmpeg源码就会报错。

最后,把原来工程里边的FFmpeg相关内容替换成重新编译好的FFmpeg静态库和头文件就OK了。

那么问题来了,为啥Xcode 8不会报错呢?...

相关文章

网友评论

    本文标题:在Xcode 9下AVFoundation框架编译不过的问题解决

    本文链接:https://www.haomeiwen.com/subject/zhahpxtx.html