本文转载至 http://blog.csdn.net/yu0089/article/details/8220275
当使用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++混编编译器设置的更多相关文章

  1. iOS开发——技术精华Swift篇&Swift 2.0和Objective-C2.0混编之第三方框架的使用

    swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言.Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题.Swift语言采用安全编程模式,且引 ...

  2. Swift和Objective-C混编注意事项

    前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...

  3. iOS 里面 Swift与Objective-C混编,Swift与C++混编的一些比较

        即使你尽量用Swift编写iOS程序,难免会遇到部分算法是用C++语言编写的.那你只能去问问”度娘“或“狗哥”怎么用Swift调用C++算法.   一,C,C++, Objective-C,S ...

  4. obeject-c 与 swift 混编

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...

  5. [ios][swift]swift混编

    http://blog.csdn.net/iflychenyang/article/details/8876542(如何在Objective-C的头文件引用C++的头文件) 1.将.m文件扩展名改为. ...

  6. Swift和Objective-C混编注意

    前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋们来讲,的确算是福音,但对于整个iOS编程从业者来讲 ...

  7. swift:Optional Type 、Swift和Objective-C混编的讲解

    ❤️❤️❤️swift中的Optional Type的?和!含义:其实就是一个装包和拆包的过程 optional的含义: Optional事实上是一个枚举类型,Optional包含None和Some两 ...

  8. iOS开发——路径篇&混编路径与全局宏路径

    混编路径与全局宏路径 最近在做东西的时候有一个地方要用到一个第三方库的,但是目前swift版的还没有找到,自己又不想写(其实是不会写),所以就想到了混编,但是中间出现了好多问题,其中印象最深的就是桥接 ...

  9. OC和C语言的混编注意点和好处

    苹果的Objective-C编译器批准用户在统一个源文件里自由地混杂利用C++和Objective-C,混编后的语言叫Objective-C++.有了它,你就能够在Objective-C利用过程中利用 ...

随机推荐

  1. C#使用SSDB管理增量日志并提供查询

    Program.cs using System; using System.Text; using CommonLinkLibrary.Util; using Newtonsoft.Json; nam ...

  2. Cryptography I 学习笔记 --- 基于Diffie-Hellman的公钥加密

    1. Diffie-Hellman协议: 假定g是集合G的生成元,G有n个元素. Alice随机选取1-n中的一个数a,并公布ga为公钥 Bob随机选取1-n中的一个数b,并公布gb为公钥 那么gab ...

  3. c# datetime是一年中的第几周

    public static int WeekOfYear(DateTime dt, CultureInfo ci) { return ci.Calendar.GetWeekOfYear(dt, ci. ...

  4. hosts文件中同一个域名两个IP的解析顺序

    比如: 192.168.0.2 www.easonjim.com 192.168.0.3 www.easonjim.com 那么解析顺序就只有最开头的IP,即:192.168.0.2 经过测试,相同域 ...

  5. js对象浅拷贝和深拷贝详解

    js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具 ...

  6. iOS中后台运行

    iOS在升级到4.0以后就支持了多任务了.下文将详细介绍一下这个特性. 1.检查设备是否支持多任务 Apple出于性能的考虑,并不是所有的iOS设备升级到iOS4以后都支持多任务,比如iPhone 3 ...

  7. Scut游戏服务器引擎之新手入门

    1. 开发语言:Scut提供C#或Python两种脚本语言开发,Python脚本的性能会比较差,建议使用编译执行的C#代码: 2. 运行平台:Scut可以Window与Linux平台上运行,Linux ...

  8. C语言对文件的读写操作以及处理CSV文件的方法

    #include <stdio.h> #define F_PATH "d:\myfile\file.txt" int main(void) { FILE *fp = N ...

  9. java编程思想第四版第9章

    练习3: public class MainTest { public static void main(String args[]){ Bcycle b=new Bcycle(); b.print( ...

  10. 用户空间和内核空间通讯之【Netlink 上】

    原文地址:用户空间和内核空间通讯之[Netlink 上] 作者:wjlkoorey258 引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接 ...