`
yangping_Account
  • 浏览: 191707 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

浅析使用C++/C/OC在iOS游戏中混编

 
阅读更多

 

 大家都知道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,这篇小结就到这里;
分享到:
评论

相关推荐

    浅析C++与C语言的几点联系与区别.pdf

    虽然在C++中使用`cout`和`cin`来进行输入输出操作,但在简单的不涉及类的C++程序中,除了这些输入输出操作外,`main`函数的结构与C语言非常相似。 2. **类与结构**:类是C++中的核心概念之一,它将数据和操作这些...

    浅析ARM汇编 C语言 C++ 相互调用的方法

    ### 浅析ARM汇编 C语言 C++ 相互调用的方法 #### 一、引言 在嵌入式开发领域,ARM架构因其低功耗、高性能的特点被广泛应用。随着软件开发需求的多样化,不同编程语言间的交互成为了一个重要的技术问题。其中,ARM...

    浅析C/C++对整数除以常量的处理

    ### 浅析C/C++对整数除以常量的处理 #### 一、除法相关的数学定义和性质 在探讨C/C++中如何处理整数除法之前,我们需要了解一些基本的数学定义和性质。 **定义1:** 除法是一种基本的算术运算,用来找出一个数...

    C语言与汇编语言混合编程浅析

    - 在C语言程序中调用汇编程序时,由于汇编子程序与C语言主程序不在同一源文件中,因此汇编子程序被视为C程序的外部函数。 - 使用`extern`关键字声明汇编子程序,例如:`extern int my_asm_function(int param1, ...

    linux c/c++ gdb浅析

    GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。对于习惯了图形界面方式的开发者,如...对于Linux新手而言,通过C/C++语言的程序作为示例,使用GDB进行调试操作,可以更好地理解程序的运行机制和调试过程。

    浅析Java、C/C++、JavaScript、PHP、Python分别用来开发什么?

    Java、C/C++、JavaScript、PHP、Python这五种编程语言在当前的软件开发领域中有着广泛的应用,下面将详细地介绍它们各自的应用场景。 首先,Java语言是一种广泛应用于企业级开发的编程语言。它具有跨平台性、面向...

    浅析c.c++中的指针.doc

    《浅析C/C++中的指针》 C/C++中的指针是编程语言的一大特性,也是其强大之处,本文将对指针的概念、应用及注意事项进行深入探讨。 首先,我们需要理解指针的基本概念。指针是一个变量,它存储的是另一个变量的地址...

    C++语言extern C浅析.zip

    2. **创建可被C++和C共同使用的头文件**:如果你编写了一个库,希望既能被C++代码使用,也能被C代码使用,那么你需要在头文件中使用`extern "C"`来声明所有的接口。例如: ```cpp #ifdef __cplusplus extern "C" { ...

    浅析C/C++ 中return *this和return this的区别

    首先我们知道~ class Test { public: Test() { return this; //返回的当前对象的地址 } ...return *this返回的是当前对象的克隆或者本身(若返回类型为A, 则是拷贝, 若返回类型为A&, 则是本身 )。...

    浅析μC/OS-ⅡAPI的设计思想及实现机制

    任何一个操作系统都会提供大量的API供程序员使用,μC/OS-Ⅱ也不例外。由于μC/OS-Ⅱ面向的是嵌入式开发,并不要求大而全,所以内核提供的API也就大多和多任务息息相关。本文通过分析μC/OS-Ⅱ中提供的API来引出μC/...

    Visual C++中的异常处理浅析

    《Visual C++中的异常处理深度解析》 Visual C++作为一款强大的开发工具,不仅支持标准的C++语言,还提供了对Microsoft Foundation Classes (MFC)的集成,这使得在异常处理方面,Visual C++有着独特的处理机制。...

    Broland C++ Builder 中的 Gdiplus(GDI+)浅析

    在Borland C++ Builder中使用GDI+时,需要注意的是,所有GDI+对象都是引用计数的智能指针,这意味着它们会在不再被引用时自动释放。这是通过IUnknown接口实现的,它提供了AddRef和Release方法来管理对象的生命周期。...

    浅析C语言与C_的异同

    ### 浅析C语言与C++的异同 #### 概述 本文旨在探讨C语言与C++语言之间的异同之处。尽管这两种语言都源于同一基础,并且在很多方面保持着相似性,但随着时间的发展和技术的进步,C++逐渐形成了自己独特的特性和编程...

    浅析C++类的底层实现

    在本文中,我们将深入探讨C++类的封装性,以及其背后的构造函数、静态变量、虚函数等核心概念。 首先,我们来理解C++中的封装性。封装是面向对象编程的三大特性之一,它允许我们将数据和操作这些数据的函数捆绑在...

    浅析C 与C语言的几点联系与区别.doc

    语法格式方面,C++要求函数声明时明确返回类型,注释支持单行和多行形式,且引入了iostream库以类的方式处理输入输出,异常处理机制使用`try`、`catch`、`throw`,比C语言的`setjmp`和`longjmp`更具有灵活性和安全性...

    深入浅析c/c++ 中的static关键字

    深入浅析C/C++中的static关键字 static关键字是C/C++语言中一个非常重要的关键字,它有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。下面我们将详细介绍C/C++中的static关键字。 一、面向...

    浅析C++中的引用与指针

    ### 浅析C++中的引用与指针 #### 引言 在C++编程语言中,指针和引用是两个非常重要的概念。正确理解和运用它们能够显著提高代码的效率和可读性。本文旨在深入剖析C++中的引用与指针,并通过具体的例子来对比和解释...

    浅析C/C++中动态链接库的创建和调用

    在C/C++编程中,动态链接库(DLL, Dynamic Link Library)是一种重要的代码复用机制。DLL文件包含可被多个程序同时使用的代码和数据,它允许开发者将功能模块化,从而减少应用程序的体积,提高系统资源利用率。这篇...

Global site tag (gtag.js) - Google Analytics