終於磕磕絆絆的在模擬器上,成功運行了已有項目。
公司提供的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錯誤。這個貌似是個大坑。我還沒來得及查看怎么處理。唉…… 先醬紫吧~~~~~