`
lifaming15
  • 浏览: 64774 次
  • 来自: ...
文章分类
社区版块
存档分类

Objective c 和 C++ 混合编程

 
阅读更多

今天的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代码之间的关系。

分享到:
评论

相关推荐

    object-c和c++混合编程的项目研究

    将 Objective-C 和 C++ 结合起来进行混合编程可以带来许多优势,特别是在需要高性能和灵活性的项目中。这种混合编程通常发生在 iOS 或 macOS 开发中,因为 Objective-C 是苹果平台的主要编程语言之一,而 C++ 则提供...

    c c++ objective-c 混合编程 头文件问题

    在C、C++和Objective-C这三种语言混合编程时,头文件管理成为一个关键问题,特别是在Xcode这样的集成开发环境中。由于Objective-C++是Objective-C和C++的融合,它可以处理C和C++的代码,因此将文件扩展名改为.mm可以...

    ObjectiveC&C++的混合编译简单demo

    ObjectiveC是Apple的面向对象的编程语言,基于C语言,而C++则是一种广泛使用的通用、面向对象的编程语言,拥有丰富的库支持和高效性能。这两种语言可以混合使用,以利用各自的优点,比如ObjectiveC的Objective-C ...

    Object-C、C、C++混合编程

    在IT行业中,Object-C、C和C++的混合编程是一种常见的技术实践,特别是在开发iOS和macOS应用程序时,因为Apple的开发环境Xcode支持这三种语言的集成。这篇博文(虽然链接不可用)可能探讨了如何有效地在这些语言之间...

    XCode与C++/C混合编程与库文件的创建和调用

    它支持多种编程语言,包括Objective-C和C++,使得开发者能够进行跨语言的混合编程。本资源主要围绕如何在XCode中进行C++/C混合编程以及创建和调用库文件,如静态库和动态库(Dylib),这些都是iOS和macOS应用开发中...

    Swift与OC,C++混合编程

    Swift与OC和C++混合编程的关键在于桥接头文件(Bridge Header)。这个头文件定义了Objective-C或C++代码对外暴露的接口,使得Swift可以访问这些接口。在Xcode中,配置好桥接头文件后,Swift代码就可以直接调用...

    基于Objective-C的美丽衣橱C/C++/MATLAB混合编程设计源码

    本项目“美丽衣橱”是一个优秀的实践案例,它通过混合使用Objective-C、C语言和MATLAB来开发一款时尚衣物管理的应用程序。 Objective-C语言作为苹果公司的主力开发语言,一直以来都被广泛应用于iOS和Mac OS平台的...

    在Objective-C中使用C++

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

    C/C++在Java、Android和Objective-C三大平台下实现混合编程

    在现代软件开发中,混合编程已经成为了一种常见的技术实践,特别是在C/C++、Java、Android和Objective-C这三种编程语言的结合中。这种混合编程能够充分利用各语言的优势,提高代码的可移植性、性能和安全性。本文将...

    Objective-C在XCode上调用C++的代码

    在iOS和macOS开发中,Objective-C和C++的混合编程是常见的需求,尤其是在需要利用C++的强大性能或已有的C++库时。本篇文章将详细介绍如何在Xcode项目中集成C++,使得Objective-C代码能够顺利调用C++的代码。 首先,...

    OC-Cpp:Objective-C++ C++混合编程

    1.在object-c++类中调用c++类 1)ViewController.m---&gt;ViewController.mm 2)#import "OcCallCpp.h" 3)OcCallCpp.h引入C++类头文件,#include "MyCppClass.h" 4)OcCallCpp.m---&gt;OcCallCpp.mm 2.在c++类中调用...

    From C++ to Objective-C (从C++到ObjectivC)

    文章内容涵盖了Objective-C的核心概念,比如Objective-C的历史、版本、语法概览、关键字、注释、代码和声明的混合使用、新类型和值(比如BOOL、YES、NO、nil、Nil和id)、SEL类型、@encode指令、源代码组织(包括.h...

    From C++ to Objective-C version:1.11

    7. **Objective-C++混合编程**:在某些情况下,开发者可能需要在Objective-C项目中使用C++代码,本教程将解释如何在同一个项目中同时使用两种语言,并处理二者的互操作性问题。 8. **Objective-C与C++的模板对比**...

    Objective-C基础教程(入门教程).pdf

    18. Objective-C与C/C++的混合编程:Objective-C与C语言兼容,因此可以轻松地在Objective-C程序中使用C代码。同时,它也能够与C++代码进行交互,但需要遵守特定的规则和约定。 19. Import指令:在Objective-C中,@...

    c语言调用C++类.zip xcode编译器

    标签"“c++ c xcode extern”"强调了这个话题的关键点:C++和C的混合编程,以及在Xcode环境中使用`extern "C"`关键字。 总的来说,C语言调用C++类是一个涉及跨语言接口设计和编译器配置的技术问题。在Xcode中,...

    The Objective-C Programming Language

    - **Objective-C++混合**:Objective-C支持与C++的混合编程,允许在同一项目中使用两种语言的代码,增加了语言的灵活性。 - **协议**:协议定义了对象应该遵循的行为规范,类似于接口的概念,使得代码更具可扩展性...

    Objective-C编程(第四版)英文原版

    12. **Swift interoperability**:随着Swift的出现,Objective-C开发者需要知道如何与Swift代码互操作,这涉及到使用桥接头文件和混合编程。 通过阅读"Objective-C编程(第四版)"这本书,你将深入理解这些概念,并...

    ios 调用c++代码

    Xcode作为苹果官方的集成开发环境,支持C++和Objective-C的混合编程,使得我们可以方便地在iOS应用中调用C++代码。下面将详细介绍如何在Xcode中进行C++和Objective-C的混编,以及如何调用C++的STL。 首先,让我们...

    From C++ to Objective-C

    **Objective-C** 是一种面向对象的编程语言,它在C语言的基础上增加了面向对象的功能,是开发macOS和iOS应用的主要语言之一。Objective-C的设计哲学强调了消息传递的概念,并且在语法上兼容C语言。 ##### 1.1 ...

Global site tag (gtag.js) - Google Analytics