博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;...
阅读量:6301 次
发布时间:2019-06-22

本文共 891 字,大约阅读时间需要 2 分钟。

  hot3.png

原创,转载务必在明显处注明:
转载自
 原文链接: 

     大家都知道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"格式进行编译代码,防止后期复杂的各种混编问题;

       OK,这篇小结就到这里;

原文链接:

转载于:https://my.oschina.net/liux/blog/49836

你可能感兴趣的文章
ue4(c++) 按钮中的文字居中的问题
查看>>
技能点
查看>>
javascript——BOM的open()和close()
查看>>
mysql 数据包太小会引发错误信息
查看>>
读书笔记《乌合之众》
查看>>
Hadoop日记Day1---Hadoop介绍
查看>>
31 socket套接字 struct模块
查看>>
「Luogu2014」 选课
查看>>
live()解决Jquery采用append添加的元素事件无效和获取不到添加元素的值
查看>>
iOS 学习资料汇总
查看>>
centos7 yum安装jdk
查看>>
Bluedroid与BluZ,蓝牙测试方法的变动(基于bludroid和BlueZ的对比)
查看>>
接口和抽象类有什么区别
查看>>
Linux 下添加用户,修改权限
查看>>
请问view controller scene,该如何删除
查看>>
bootstrap新闻模块样式模板
查看>>
zzzzw_在线考试系统①准备篇
查看>>
App Store 审核被拒的23个理由
查看>>
剑指offer第二版-1.赋值运算符函数
查看>>
javascript 对象
查看>>