IOS中引用C函数造成的Undefined Symbol错误以及Link error解析

   最近这段时间在研究ffmpeg在IOS项目中的实际应用,遇到了已下几个问题,都是在编译的时候出现的,现在分享给大家,因为我在网上也尝试找过各种解决方法,但是大部分文章都是你转我的、 我转你的,几乎都一样,设置了那几个东西都没用
  现在我把我自己实际运用过程中遇到的问题跟大家做分享:

  1.include头文件的时候报无法找到该头文件
  首先我把ffmpeg的所有.a文件还有头文件都导入了工程内,这时候编译是能通过的,但是在C的类里面引用头的时候,编译不过并且当时就报了错,这时候的错误一般都是编译器没有读取到头文件的路径,解决方法就是重新设置下Head Search Path,在Target 的BuildSettings里面搜索下Head Search Paths,将头文件的路径目录写入,这个时候一定要注意路径目录是否正确


   2.调用C函数系统报linker command failed with exit code 1错误
   与第一个问题类似,这种问题的关键在于头文件里面有函数定义,但是编译器链接库失败,具体的库链接问题同样是在

Target 的BuildSettings里面Search Paths里面的Libray 项里面,同前一个问题一样将库的路径目录写入


  3.在OC中引用C函数的时候报Undefined Symbol错误
  这个问题应该是三个里面最不常见的问题,为了这个问题我也上网搜索了很多的解决方式,但是都通通无效,包括又重新看了一下如何在OC中构建C文件和引用C函数,然后挨个步骤对照我的项目代码,但是还是没有找到解决方案,这个问题困扰了我很久,当时也没人指引我,后来经过同事的一般点播,才大彻大悟

  那就是在OC中引用C函数的时候要对C函数进行目标修饰-----》extern "C" {},关于extern的问题大家可以去搜下,网上见解太多了,将C函数的头文件放入修饰中,然后编译就OK了,完美通关

 

以上就是个人实际开发中遇到的问题和解决的方案,希望对大家有用

--------------------------------------------------OVER-------------------------------------------------------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值