`

Objective-C/C++混编编译器设置

 
阅读更多

XCode编译器介绍 :

http://www.cnblogs.com/ydhliphonedev/archive/2012/08/29/2661726.html


原文:http://blog.csdn.net/wangyuchun_799/article/details/7729222


当使用Xcode编写C++代码时,难以避免要使用xcode/C++混合编译。

          如果你在Xcode中编写的工程中既有Objective-C代码,又有C++代码,在没有任何设置编译器选项的默认情况下,你将会发现一下问题:

(1)编译器报错。莫名其妙的错误,如C++的关键字(如virtual, new, delete等)找不到,不能解析啊等问题

(2)以*.cpp结尾的纯C++代码编译没有问题,但是既有Objective-c又有C++的文件(*.mm)文件就会报各种问题


在Xcode中,通常,Objective-c的后缀名位 .h/.m,C语言的后缀名为 .h/.c, C++的后缀名为.h/.cpp, 当一个文件中既有objective-c又有C++代码时,后缀名为 .h/.mm。在编写代码时要写对后缀名。其次,你可能发现,后缀名都写对了,代码也没有任何问题,编辑器也没有报错,为什么编译的时候就报错了呢?事实上,编译器和编辑器的工作是区分开来的,编辑器就是你写代码的地方,仅检查代码语法是否有错误,你语法没有错误当然不会报错了。编译器就是要编译运行在编辑器中编写好的代码,如果编辑器仅支持Objective-C,它怎么可能编译的了C++代码呢?


要让编译器知道代码中有C++代码,要对编译器做一些设置,先看图:

1.单击你的工程,选择TARGET下的目标文件

2.在选项卡中选择“Build Settings”选项

3.找到“Apple LLVM compiler x.x - Language”设置项(其中x.x为你的xcode默认的LLVM编译器版本,不同的xcode版本不一样)

4.图中绿色选中的选项“Compile Sources As”,意思是要把工程按照哪一种语言进行编译,默认是第一个“According to File Type”,将其改成Objective-C++即可。

        现在重新编译一下你的工程是不是就可以成功编译了呢。

分享到:
评论

相关推荐

    在Objective-C中使用C++

    在Objective-C中使用C++是iOS和Mac开发中常见的技术结合,因为Objective-C是Apple的主推编程语言,而C++则是一种强大的、通用的面向对象的语言,尤其适合处理底层计算和高性能的需求。这篇博客(<https://eric-gao....

    Objective-C和C++混编的要点

     Objective-C和C++混编的要点  在 Objective-C++中,可以用C++代码调用方法也可以从Objective-C调用方法。在这两种语言里对象都是指针,可以在任何地方使用。例 如,C++类可以使用Objective-C对象的指针作为数据...

    C++和Objective-C混编 如何在xcode中用C++的STL

    本篇文章将详细介绍如何在Xcode中进行C++和Objective-C的混编,以便在Objective-C项目中使用C++的STL。 首先,我们需要理解C++和Objective-C之间的主要差异。Objective-C是C的超集,增加了面向对象特性,如类别...

    OC与c++混编文件

    在进行OC与C++混编时,需确保编译器设置正确。Xcode项目中,需要在Build Settings中将“Compile Sources As”设置为“Objective-C++”,这样所有`.m`文件都会被当作Objective-C++文件处理,从而支持C++语法。 总之...

    swift oc c++混编framework demo

    "swift oc c++混编framework demo"项目就是这样一个示例,它展示了如何将这三种语言集成到一个Framework中,并进行有效的协同工作。 首先,我们来了解一下Swift、Objective-C和C++各自的特点。Swift是Apple推出的一...

    objective-c 基础教程

    Swift与Objective-C可以混编,方便迁移旧项目。 六、Xcode的使用 Xcode是苹果官方的开发工具,支持Objective-C和Swift编程。Xcode4.2+版本已经很成熟,包含了编写、调试、测试和打包应用所需的所有功能。使用...

    ios demo,object-c调用函数和c++函数

    3. **混编Objective-C和C++**:在同一个.m文件中,你也可以使用`#ifdef __cplusplus`来在Objective-C和C++代码之间切换。这种方式通常用于在已有的Objective-C类中添加C++功能,但不推荐在大型项目中使用,因为它...

    json_c.zip

    混编C++代码和Objective-C/Swift代码在iOS开发中并不常见,但在特定情况下是必要的,比如利用已有的C++库或者需要C++的高性能计算。Xcode提供了Clang的桥接技术来支持这种混编,通过创建一个Objective-C++或Swift的...

    面试题第4篇1

    以上就是面试题第4篇1中涉及到的主要知识点,包括Objective-C与C++的混编、FFmpeg在C++和Java中的使用、FMDB数据库操作、iOS的Sandbox环境以及文件系统的管理。理解和掌握这些技术对于iOS和多媒体开发至关重要。

    从C++到Objective C的学习之路

    8. **Objective C++**:Objective C和C++可以混编,Objective C++是它们的结合体,允许在同一个项目中使用Objective C的特性以及C++的模板和STL。 9. **异常处理**:C++支持异常处理,通过try、catch、throw语句来...

    iOSQRCode二维码

    然后,在C++代码中,你可以通过`extern "C"`来声明这些接口,以便C++编译器正确处理名称修饰。例如: ```cpp extern "C" { void* createQRCodeGenerator(const char* message); void releaseQRCodeGenerator(void...

    MXCPPTest.zip

    首先,我们要明白OC与C++混编的核心在于Objective-C++,这是一种特殊的编译器,它允许我们同时使用OC和C++的特性。Objective-C++文件的扩展名通常为.mm,而非传统的.m(Objective-C)或.cpp(C++)。在"MXCPPTest...

    探索C++的秘密之详解extern

    通常这个需求出现在C++与C语言混编的场合,或者需要调用一些已经存在的C语言编写的标准库和第三方库。 在C++中,重载(overloading)是支持同一个作用域内可以存在多个同名的函数,这些函数通过参数列表的不同来...

    windows下gcc编译

    GCC(GNU Compiler Collection)是一个开源的编译器套件,它支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada和Go等。在Windows上使用GCC通常涉及到MinGW(Minimalist GNU for Windows)或MSYS2等环境,...

    libcurl-ios-dist.zip

    混编技术是iOS开发中的一个重要概念,它允许我们在Objective-C和Swift项目中同时使用C++代码。libcurl本身是用C语言编写,因此可以无缝地与这两种语言配合。在项目中使用libcurl,需要确保“Other Linker Flags”...

Global site tag (gtag.js) - Google Analytics