XCode 7 运行 cocos2dx 2.2.6问题小节
终于磕磕绊绊的在模拟器上,成功运行了已有项目。
公司提供的Mac系统,版本炒鸡低。向同事拷贝了OS,和XCode。
安装完成后,将已有的可以在Windows上成功运行Android版本的项目,拷贝到了Mac上。
离职同事表示,自己可以正常在Mac上运行,只在虚拟机上运行,真机上不支持64位的。
用xcode打开proj.ios下的项目,
报出的第一次错误是 编译错误20个。
提示NObjSRuntime.h 什么 qualitified_id 以及NSString之类的,搜索了网上无数方法,都不管用。
最后木有办法,一个个错误点开,猜测是项目内的Wrapper.h 文件和 第三方内提供的Wrapper.h文件冲突,导致项目内其他自己写的h,cpp文件搜索到了第三方Wrapper.h。
一个一个为Wrapper.h加上了目录以进行区分。
这个错误,就此解决了。
然后,再编译就是Link错误。Undefined symbols for architecture i386:
因为第三方加入了anysdk,所以提示了anysdk::framework::********
以及一长溜的std::_1::std::string等等总共71个错误。
网上搜索了无数个方法,都试了,但是解决不了。后来,发现是自己煞笔,因为仔细想想这个错误其实就是没有导入源文件啊,或者是缺少库啊造成的。
but,这些库反复看了,根本就不少么。后来试着将项目的 Build Settings->Apple LLVM *.0 -Language -C++ 下的C++ Standard Libray 由Compiler Default 改成LibC++,同时将Deployment Target改成 7.0 以下,至于为什么, 我也不知道!!!!!
重新Build后,错误变成了45个。依旧是Link错误。Undefined symbols for architecture i386
虽然错误类型一样,但是终于内容变了不是么?
错误变成了 CCDictionary::…… CCString…… 之类的一系列错误,在网上搜索了两天,结果发现很多人都遇到这个问题,但是后来大家都不分享解决之道,真的让人很崩溃撒~
特么的,终于在一个满是英文的地方,看到一个人不经意的提到,在将项目改成libC++ 时,同样的操作也应该对cocos2dx项目进行。我累个擦~~~~~
就是将cocos2dx的 Deployment Target 改成7.0以下,我项目选择的是6.0,为了保险,此时cocos2dx 也选的6.0.
然后将 C++ Standard Libray 改成LibC++。当然了,我同时还顺带着将C++ Language Dialect改成了c++ 11 .此时我声明一下,我不知道这样改了之后会影响什么。
当解决了这些问题后,我觉得我的新生要来了,我要重生了,因为的真的真的特别累! 再不运行成功,我可能就会自爆或者自燃了。
但是,人得相信自己的承受能力。因为,特么的,Build一下,发现,还是出现了Link错误,幸好是一个啊。Only One。
但是,我看到错误后,无从下手啊,因为是duplicate symbols _InternetConnect IReachability.o等一系列的错误
看了半天,有人说是在import的时候,误将.h 写成了.m 你妹啊 ,你大爷的 我觉得这种错误是不可能存在的!
因为,我查了一下,Reachability.m是asi文件夹下的,这个很明显是第三方代码,所以肯定不会错。纠结了半天,还是决定仔细看看google出的第一条处理方法,恩,就是一堆歪果仁写的英文,貌似是让remove掉,重定义的部分。我可不敢,于是我根据提示IReachability.o 和 Reachability.o冲突,找到了Reachability.m文件,将kInternetConnect等变量,进行了重命名。
问,为啥是改的Reachability.m文件,而不改IReachability.m文件呢? 因为,IReachability.o是包含在第三方静态库里的,我想改,没有提供给咱们改的方法啊。
终于,大胆的改完之后,Build Success了!
当然,是在虚拟机上。
最后,我还是决定真机上Run一下,不好意思,出现了Code Sign Error错误。这个貌似是个大坑。我还没来得及查看怎么处理。唉…… 先酱紫吧~~~~~