今天的topic是如何使用objective c 与 c++ 进行混合编程
参考的代码是苹果官方的文档,地址如下:
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocCPlusPlus.html
1。首先创建一个新的project,使用的模板是"Mac os x" -> "Application" -> " Command line tool(Foundation)",命名为Hello。
2。在xcode左侧可以看见文件列表,在"Group&Files"下面可以找到Hello.m文件,将其重命名为Hello.mm,以启动objecitvec++编译器。
3。在Hello.mm文件中,键入如下代码:
/* Hello.mm
|
* Compile with: g++ -x objective-c++ -framework Foundation Hello.mm -o hello
|
*/
|
|
#import <Foundation/Foundation.h>
|
class Hello {
|
private:
|
id greeting_text; // holds an NSString
|
public:
|
Hello() {
|
greeting_text = @"Hello, world!";
|
}
|
Hello(const char* initial_greeting_text) {
|
greeting_text = [[NSString alloc] initWithUTF8String:initial_greeting_text];
|
}
|
void say_hello() {
|
printf("%s/n", [greeting_text UTF8String]);
|
}
|
};
|
|
@interface Greeting : NSObject {
|
@private
|
Hello *hello;
|
}
|
- (id)init;
|
- (void)dealloc;
|
- (void)sayGreeting;
|
- (void)sayGreeting:(Hello*)greeting;
|
@end
|
|
@implementation Greeting
|
- (id)init {
|
self = [super init];
|
if (self) {
|
hello = new Hello();
|
}
|
return self;
|
}
|
- (void)dealloc {
|
delete hello;
|
[super dealloc];
|
}
|
- (void)sayGreeting {
|
hello->say_hello();
|
}
|
- (void)sayGreeting:(Hello*)greeting {
|
greeting->say_hello();
|
}
|
@end
|
|
int main() {
|
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
|
Greeting *greeting = [[Greeting alloc] init];
|
[greeting sayGreeting]; // > Hello, world!
|
|
Hello *hello = new Hello("Bonjour, monde!");
|
[greeting sayGreeting:hello]; // > Bonjour, monde!
|
|
delete hello;
|
[greeting release];
|
[pool release];
|
return 0;
|
}
|
4。Build And Run。
至此第一个混编的程序已经完成,在摸索的过程中,我遇到了如下的问题:
1。不知道该创建一个以什么为模板的项目?
2。不知道该将c++代码写在哪里?
3。不知道怎样启动objective c++编译器(即,怎样创建一个mm文件)
3。不知道c++和objectivec代码之间的关系。
分享到:
相关推荐
将 Objective-C 和 C++ 结合起来进行混合编程可以带来许多优势,特别是在需要高性能和灵活性的项目中。这种混合编程通常发生在 iOS 或 macOS 开发中,因为 Objective-C 是苹果平台的主要编程语言之一,而 C++ 则提供...
在C、C++和Objective-C这三种语言混合编程时,头文件管理成为一个关键问题,特别是在Xcode这样的集成开发环境中。由于Objective-C++是Objective-C和C++的融合,它可以处理C和C++的代码,因此将文件扩展名改为.mm可以...
ObjectiveC是Apple的面向对象的编程语言,基于C语言,而C++则是一种广泛使用的通用、面向对象的编程语言,拥有丰富的库支持和高效性能。这两种语言可以混合使用,以利用各自的优点,比如ObjectiveC的Objective-C ...
在IT行业中,Object-C、C和C++的混合编程是一种常见的技术实践,特别是在开发iOS和macOS应用程序时,因为Apple的开发环境Xcode支持这三种语言的集成。这篇博文(虽然链接不可用)可能探讨了如何有效地在这些语言之间...
它支持多种编程语言,包括Objective-C和C++,使得开发者能够进行跨语言的混合编程。本资源主要围绕如何在XCode中进行C++/C混合编程以及创建和调用库文件,如静态库和动态库(Dylib),这些都是iOS和macOS应用开发中...
Swift与OC和C++混合编程的关键在于桥接头文件(Bridge Header)。这个头文件定义了Objective-C或C++代码对外暴露的接口,使得Swift可以访问这些接口。在Xcode中,配置好桥接头文件后,Swift代码就可以直接调用...
本项目“美丽衣橱”是一个优秀的实践案例,它通过混合使用Objective-C、C语言和MATLAB来开发一款时尚衣物管理的应用程序。 Objective-C语言作为苹果公司的主力开发语言,一直以来都被广泛应用于iOS和Mac OS平台的...
在Objective-C中使用C++是iOS和Mac开发中常见的技术结合,因为Objective-C是Apple的主推编程语言,而C++则是一种强大的、通用的面向对象的语言,尤其适合处理底层计算和高性能的需求。这篇博客()可能会探讨如何将...
在现代软件开发中,混合编程已经成为了一种常见的技术实践,特别是在C/C++、Java、Android和Objective-C这三种编程语言的结合中。这种混合编程能够充分利用各语言的优势,提高代码的可移植性、性能和安全性。本文将...
在iOS和macOS开发中,Objective-C和C++的混合编程是常见的需求,尤其是在需要利用C++的强大性能或已有的C++库时。本篇文章将详细介绍如何在Xcode项目中集成C++,使得Objective-C代码能够顺利调用C++的代码。 首先,...
1.在object-c++类中调用c++类 1)ViewController.m--->ViewController.mm 2)#import "OcCallCpp.h" 3)OcCallCpp.h引入C++类头文件,#include "MyCppClass.h" 4)OcCallCpp.m--->OcCallCpp.mm 2.在c++类中调用...
文章内容涵盖了Objective-C的核心概念,比如Objective-C的历史、版本、语法概览、关键字、注释、代码和声明的混合使用、新类型和值(比如BOOL、YES、NO、nil、Nil和id)、SEL类型、@encode指令、源代码组织(包括.h...
7. **Objective-C++混合编程**:在某些情况下,开发者可能需要在Objective-C项目中使用C++代码,本教程将解释如何在同一个项目中同时使用两种语言,并处理二者的互操作性问题。 8. **Objective-C与C++的模板对比**...
18. Objective-C与C/C++的混合编程:Objective-C与C语言兼容,因此可以轻松地在Objective-C程序中使用C代码。同时,它也能够与C++代码进行交互,但需要遵守特定的规则和约定。 19. Import指令:在Objective-C中,@...
标签"“c++ c xcode extern”"强调了这个话题的关键点:C++和C的混合编程,以及在Xcode环境中使用`extern "C"`关键字。 总的来说,C语言调用C++类是一个涉及跨语言接口设计和编译器配置的技术问题。在Xcode中,...
- **Objective-C++混合**:Objective-C支持与C++的混合编程,允许在同一项目中使用两种语言的代码,增加了语言的灵活性。 - **协议**:协议定义了对象应该遵循的行为规范,类似于接口的概念,使得代码更具可扩展性...
12. **Swift interoperability**:随着Swift的出现,Objective-C开发者需要知道如何与Swift代码互操作,这涉及到使用桥接头文件和混合编程。 通过阅读"Objective-C编程(第四版)"这本书,你将深入理解这些概念,并...
Xcode作为苹果官方的集成开发环境,支持C++和Objective-C的混合编程,使得我们可以方便地在iOS应用中调用C++代码。下面将详细介绍如何在Xcode中进行C++和Objective-C的混编,以及如何调用C++的STL。 首先,让我们...
**Objective-C** 是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的功能,是开发macOS和iOS应用的主要语言之一。Objective-C的设计哲学强调了消息传递的概念,并且在语法上兼容C语言。 ##### 1.1 ...