Undefined symbols for architecture i386:

先说一下检查xcode报错的经验,一定要仔细看报错,如果是文件报错路径是哪里,配置错误是什么配置。xcode默认显示缩略报错,要点开右上角的报错详情
这里写图片描述


Undefined symbols for architecture i386: 这是一个常见报错,通常的原因是忘记引用一些文件、lib、framework等。

贴一个例子
这里写图片描述

这里缺少的是sqlite3_bind_blob等方法,这些方法包含在sqlite3.dylib中,因此加入这个库即可解决问题

这里写图片描述


与之相对的是duplicate报错,意思是有相同的函数定义,它们冲突了

贴一个例子
这里写图片描述
这里写图片描述

仔细看报错描述,在两个不同的路径下,有相同的UPPayPlugin文件,所以报错。

这个时候,不同情况有对应的解决方法:

1.简单的文件重复A和B,可以删除掉任意一份
2.两个lib文件重复,也可以删除掉任意一份
3.两个lib中部分文件冲突,A lib包含B lib,这个时候删除B
4.两个lib中部分文件冲突,且均有不同文件,这个时候只能修改lib文件了


特殊情况。有的时候xcode的报错,它并不能直接告诉我们哪里出现了问题,这个时候真的需要靠经验去发现问题。

例如以下报错:
这里写图片描述

这是我在接入 XY助手 这个渠道的时候遇到的问题。
乍眼一看好像就是少了一些头文件,可是这些文件是包含在lib库中的,这下头疼了。
仔细核对核对了很久demo,发现appdelegate文件的后缀是.mm,而lib文件也恰好是在这个文件中,难道是这个文件后缀的原因?

这里写图片描述

把appdelegae文件后缀修改为.mm,编译了以下果然不再报错。
这又是为什么呢?应该是xyplatform中引入了c++相关的代码,因此需要设置文件为.mm进行混合编译。如果文件为.m后缀,c++相关代码无法编译,造成了undefined symbol的报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值