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

来源:互联网 发布:计算机编程基础知识书 编辑:程序博客网 时间:2024/05/21 10:23

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.old: symbol(s) not found for architecture arm64clang: 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

0 0
原创粉丝点击