【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

简介:

 大家都知道Xcode中支持C、C++、Object-C3种语言的混编,在上一节Box2d中介绍过cocos2d封装的box2d是c++源码实现的,那么如果想让编译器混编,只需要将实现类的".m"格式修改成".mm"即可,这样编译器即可编译允许c、c++、oc的代码;

     但是混编代码,在编译最容易出现也是最多的错误如下:

 

  1. 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,这篇小结就到这里;










本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/665715,如需转载请自行联系原作者
目录
相关文章
|
IDE 测试技术 开发工具
Poco新增对cocos c++游戏的支持
Poco新增对cocos c++游戏的支持
232 1
|
人工智能 算法 BI
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
第十四届蓝桥杯省赛大学C组(C/C++)三国游戏
|
设计模式 IDE 编译器
【C++面向对象——类的多态性与虚函数】编写教学游戏:认识动物(头歌实践教学平台习题)【合集】
本项目旨在通过C++编程实现一个教学游戏,帮助小朋友认识动物。程序设计了一个动物园场景,包含Dog、Bird和Frog三种动物。每个动物都有move和shout行为,用于展示其特征。游戏随机挑选10个动物,前5个供学习,后5个用于测试。使用虚函数和多态实现不同动物的行为,确保代码灵活扩展。此外,通过typeid获取对象类型,并利用strstr辅助判断类型。相关头文件如<string>、<cstdlib>等确保程序正常运行。最终,根据小朋友的回答计算得分,提供互动学习体验。 - **任务描述**:编写教学游戏,随机挑选10个动物进行展示与测试。 - **类设计**:基类
317 3
|
人工智能 算法 Java
【搜索算法】数字游戏(C/C++)
【搜索算法】数字游戏(C/C++)
C++小练习:猜数游戏
C++小练习:猜数游戏
172 3
|
图形学 C++ C#
Unity插件开发全攻略:从零起步教你用C++扩展游戏功能,解锁Unity新玩法的详细步骤与实战技巧大公开
【8月更文挑战第31天】Unity 是一款功能强大的游戏开发引擎,支持多平台发布并拥有丰富的插件生态系统。本文介绍 Unity 插件开发基础,帮助读者从零开始编写自定义插件以扩展其功能。插件通常用 C++ 编写,通过 Mono C# 运行时调用,需在不同平台上编译。文中详细讲解了开发环境搭建、简单插件编写及在 Unity 中调用的方法,包括创建 C# 封装脚本和处理跨平台问题,助力开发者提升游戏开发效率。
1847 0
|
定位技术 C++ Windows
第一人称射击游戏 C++控制台版(未完成)
第一人称射击游戏 C++控制台版(未完成)
277 0
第一人称射击游戏 C++控制台版(未完成)
|
存储 人工智能 C++
【PTA】L1-093 猜帽子游戏(C++)
【PTA】L1-093 猜帽子游戏(C++)
392 1
|
测试技术
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
|
C++
C++循环结构实现的猜数字游戏
C++循环结构实现的猜数字游戏
458 1