• 熱門專題

iOS-Cocos2d游戲開發(十二) Xcode中C、C++、Object-C3種語言混編問題

作者:李華明  發布日期:2012-12-10 19:12:47
Tag標簽:iOS-Cocos2d  游戲開發  Xcode  
  • 大家都知道Xcode中支持C、C++、Object-C3種語言的混編,在上一節Box2d中介紹過cocos2d封裝的box2d是c++源碼實現的,那么如果想讓編譯器混編,只需要將實現類的”。m”格式修改成”。mm”即可,這樣編譯器即可編譯允許c、c++、oc的代碼;

    但是混編代碼,在編譯最容易出現也是最多的錯誤如下:


    Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2 failed with exit


     

    部分分析總結如下:

     1.  (全局變量)static方法名重復-因為C語言里沒有對象的概念,它的方法只要加入相應的.h文件就可以使用,所以,如果和C++ or Objective-C的靜態方法重名了,那么環境無法區分,很明顯,這個錯誤是編譯時候的錯誤,而對于static的變量及方法是在編譯的時候便被加入的,所以無法識別.

     2.  (命名空間)全局變量名重復,理由和上面是一樣的,當然,如果是全局變量,建議在Objective-C的.m文件(當然現在被改成.mm了)中聲名,不然,聲明在.h中單獨使用是沒有問題的,如果直接引用了C or C++的.h,那么即使這時候全局變量不重復,也會出現上面的問題.

     3.  (主函數)含有多個main方法,main方法是程序的入口,如果有多個文件含有main方法,那么也會出現上面的問題.

       其實對于“failed with exit”的問題,總的來說,這個問題就是因為方法或是全局變量重復所導致的編譯環境無法識別并編譯 !所以童鞋們使用混編程序的時候要特別注意,最好的解決辦法就是,如果你的項目后期有1/100000 的幾率會使用混編進行(例如加入box2d開發包),那么就應該從項目一開始就將實現類修改成”.mm”格式進行編譯代碼,防止后期復雜的各種混編問題;  www.crzcf.com

    OK,這篇小結就到這里;


About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
大资本彩票网什么是网赚投票网赚快三投注网山东群英会选号技巧百度网赚平台是真的吗极速快乐8群河北快3开奖e畅家园网赚河南快3走势图