XCode8.1中内联函数inline引起的Undefined symbols for architecture arm64

XCode8.1中内联函数inline引起的Undefined symbols for architecture arm64


这段时间在做一个IOS项目,需要用到3D显示模块,所以在工程中嵌入了Unity开发包。一直都挺顺利,结果上周五运行的时候突然出现:

Undefined symbols for architecture arm64:
  "_GetAppController", referenced from:
      -[CXProductDetailController viewWillAppear:] in CXProductDetailController.o
      -[CXUnityFullScreenController viewWillAppear:] in CXUnityFullScreenController.o
      -[CXHomeController addUnityView] in CXHomeController.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这是什么鬼,貌似是Unity定义的一个函数,Unity不是太熟,怎么办?好好的代码突然就这样运行不了了,这应该是码农最常见最苦逼的遭遇吧!O(∩_∩)O哈哈~ 网上各种搜索修改Build选项都没有用!XCode、Pod工具各种重装,甚至周末直接重装了Mac系统和开发环境都没用。


重点来了:到底怎么解决呢?
XCode恢复到7.2证明是可以的,看来是XCode8.1的问题,但这个怎么行别人都在用新的开发工具难道自己一直用XCode7.2吗,这逼格一下子低了N个档次。
继续想办法!!!


为什么别的函数不出错,偏偏是这个呢?最终发现问题之所在:

inline UnityAppController*  GetAppController()
{
    ......
}

这个函数是一个inline内联函数,这个定义貌似不是太标准,修改一下在前面添加static关键字
于是变成:
static inline UnityAppController* GetAppController() {
……
}
编译、运行!终于通过了!!!!
困扰了几天的问题就这个一个关键字给解决了。


为什么XCode7.2没出错,就搞不清了。至于为什么inline函数要加static,请查看这篇博客吧 http://blog.csdn.net/huanghui167/article/details/41346663

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值