Xcode编译错误 no member named 'clock_t' int he global namespace

5 篇文章 0 订阅
2 篇文章 0 订阅

今天需要把ffmpeg库合入工程项目中,结果遇到一个很奇怪的问题,单独的工程可以完美运行,但是合入到我们的主项目时,缺一直报错。。。这个问题非常郁闷,测试了半天,各种添加头文件库文件搜索路径测试,都没有解决这个问题。google一下,最后发现一个类似的问题,https://github.com/johmathe/Shotdetect/issues/1。终于搞明白怎么回事了,原来是ffmpeg库中使用了libavutil中有个time.h头文件。我们的工程还是用了cocos2d-x框架,这里面用到了系统类库的time.h头文件,但是我再引入ffmpeg库的时候,使用了搜索路径的方式导入,很郁闷就导致了后面的搜索路径覆盖了系统本身的time.h头文件。。。于是就发生了上面的报错。

找到问题之后,于是开始尝试解决办法,实际导入这种第三方类库,最重要的是两个问题,一个是设置静态库的搜索路径,还有一个就是头文件的路径。当我们把文件以group的形式加入到工程中时,xcode就会自动帮我们配置这些路径了。如果是静态库文件,xcode工程文件中Library Search Paths中会有相应的静态库的文件夹路径;头文件的话,则直接会被工程索引,但是这个问题就在于,以这种方式导入的话,头文件的使用就是直接以头文件的名称即可,不再带有工程路径,time.h就行。但是同样的问题还是存在,文件名的作用域会在整个工程中存在,会跟系统的头文件冲突,我的解决办法是从工程中删除掉头文件的引用,留下对静态库的引用。同时,在Header search Paths中添加ffmpeg的路径即可,这样即使在工程中没有这个头文件的引用,但是xcode会自动搜索目录,并且索引进来的,我们同样可以看到这些头文件,系统类库的头文件就是以这种方式引入的。这时,就可以达到这样的目的,time.h的文件对于编译器而言是libavtitl/time.h,这样在编译以后就不会引起冲突了。


删除工程中的头文件引用



在工程文件中添加头文件的搜索目录



另外,后面又遇到了一次类似的问题,一直无法解决。后来设置always search userpath为NO就解决了这个问题


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值