1. 建立一个C++类

2. 写一个Adaptor的Objective-C类

3. 在其他Objective-C的逻辑中调用Adaptor类。

1.C++类

//
// CPlusPlusClass.h
// OBJ_C++
//
// Created by Txtw on 13-7-2.
// Copyright (c) 2013年 Txtw. All rights reserved.
// #ifndef __OBJ_C____CPlusPlusClass__
#define __OBJ_C____CPlusPlusClass__ #include <iostream> class CPlusPlusClass {
public:
CPlusPlusClass();
virtual ~CPlusPlusClass();
void func();
void setInt (int i) {
m_i = i;
} private:
int m_i;
}; #endif /* defined(__OBJ_C____CPlusPlusClass__) */
//
// CPlusPlusClass.cpp
// OBJ_C++
//
// Created by Txtw on 13-7-2.
// Copyright (c) 2013年 Txtw. All rights reserved.
// #include "CPlusPlusClass.h" CPlusPlusClass::CPlusPlusClass() : m_i()
{
printf("CPlusPlusClass::CPlusPlusClass()\n");
func();
} CPlusPlusClass::~CPlusPlusClass()
{
printf("CPlusPlusClass::~CPlusPlusClass()\n");
} void CPlusPlusClass::func() {
printf("CPlusPlusClass func print: %d\n", m_i);
}

2. Adaptor类

//
// ObjectiveCAdaptor.h
// OBJ_C++
//
// Created by Txtw on 13-7-2.
// Copyright (c) 2013年 Txtw. All rights reserved.
// #import <Foundation/Foundation.h> class CPlusPlusClass; //这个声明得小心,千万不要写成@class,兄弟我搞了半宿才找到这个错误。呵呵,见笑,见笑。 @interface ObjectiveCAdaptor : NSObject {
@private
CPlusPlusClass *testObj;
} - (void) objectiveFunc;
@end

在Build Settings中把编译器的Compile Sources As选项改为Objective C++。否则编译器找不到C++类。

//
// ObjectiveCAdaptor.m
// OBJ_C++
//
// Created by Txtw on 13-7-2.
// Copyright (c) 2013年 Txtw. All rights reserved.
// #import "ObjectiveCAdaptor.h"
#include "CPlusPlusClass.h" @implementation ObjectiveCAdaptor - (id) init {
if (self = [super init]) {
testObj = new CPlusPlusClass();
} return self;
} - (void) dealloc {
if (testObj != NULL) {
delete testObj;
testObj = NULL;
}
[super dealloc];
} - (void) objectiveFunc
{
testObj->setInt();
testObj->func();
} @end

3.调用

//调用示例:
- (void) callObjectiveCAdaptorMethod
{
ObjectiveCAdaptor *testObjectiveCObj = [[ObjectiveCAdaptor alloc] init];
[testObjectiveCObj objectiveFunc];
[testObjectiveCObj release];
}

from:http://www.cnblogs.com/biosli/archive/2011/04/30/Mixing_ObjectiveC_and_Cplusplus_in_iPhone_Development.html

参考:http://www.cocoachina.com/bbs/read.php?tid-9111-fpage-3.html

http://blog.csdn.net/horkychen/article/details/7935910

调用C

1.创建.h, .m文件

2.#import "testC.h"   直接调用方法

testC.h如下:

int hello(int i,int j);

testC.m如下:

int hello(int i,int j){
return i+j;
}

Objective-C 调用C++,C的更多相关文章

  1. js与objective-c的交互-备

    在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Ob ...

  2. Object-C与Swift混合开发

    Object-C作为Apple的iOS App开发语言服务了很多个年头,2014年Apple推出了新的编程语言Swift.更高效更安全的口号再次吸引了一大批非iOS开发程序猿进入,小编觉得Swift代 ...

  3. IOS开发之——objective-c与javascript交互

    原文:http://blog.csdn.net/pjk1129/article/details/6936545 在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要 ...

  4. iOS js与objective-c的交互(转)

    在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Ob ...

  5. Optaplanner与Google OR-Tools的区别

    在规划相关的项目工作中,近两年我们的项目主要使用的是Optaplanner作为规划引擎,其核心也是一个的规划求解器(Solver).但作为另一个著名开源求解器Google OR-Tools(下称OR- ...

  6. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  7. 黑马毕向东Java基础知识总结

    Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记    侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...

  8. 《果壳中的C# C# 5.0 权威指南》 - 学习笔记

    <果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari ...

  9. [Objective C]super dealloc 调用时机

    转自:http://dcm19872007.blog.163.com/blog/static/86519374201311953739818/ objective-c 语言中最头疼的事就是内存释放,申 ...

  10. Unity3D脚本调用Objective C代码实现游戏内购买

    0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...

随机推荐

  1. Download interrupted: URL not found.

    Download interrupted: URL not found.   androidURL not found 应该是url被墙了.可以试下:启动 Android SDK Manager ,打 ...

  2. poj 1259 Agri-Net(最小生成树)

    题目:http://poj.org/problem?id=1258 题意:模板题 和2485差不多 就是求相连后的最小值. #include <iostream> #include< ...

  3. 在QuickReport中实现多栏打印

      如果在Treport的DataSet属性中选定一个Table,那么QuickReport每次打印详细列表(BandType=rbDetail)属性的TQRBand时,系统会自动取出一个记录供打印, ...

  4. Webapp meta标签解决移动缩放的问题

    webapp开发初期,会碰到在pc端开发好的页面在移动端显示过大的问题,这里需要在html head中加入meta标签来控制缩放 <meta name=" viewport" ...

  5. Tomcat配置HTTPS方式

    简要记录主要步骤备忘 1.进入到jdk下的bin目录 2.输入如下指令 keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat ...

  6. P2P编程(十)

    此为网络编程的一个系列,后续会把内容补上....

  7. SharePoint 2010 出错! HTTP Error 503. The service is unavailable

    转:http://544729.blog.51cto.com/534729/464087 昨天,公司的sharepoint 2010 无法打开,提示HTTP Error 503. The servic ...

  8. [selenium webdriver Java]隐式的等待同步

    Selenium WebDriver提供了隐式等待来同步测试.当使用了隐式等待执行测试的时候,如果WebDriver没有在DOM中找到元素,将继续等待,超出设定时间后,抛出找不到元素异常 即,当元素没 ...

  9. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录状态Session

    在写自动化测试的Node.js脚本时, 时常需要测试所写的case, 可能都需要去重新登录一遍,这将相当的耗时, 好在Selenium都借了Session的机制, 如果在最初的浏览器没有关闭的情况下, ...

  10. Anti-Grain Geometry 概述

    AGG是一个轻量.灵活.可靠的图形算法库,AGG各部分之间是松耦合的,也即是说各部分可以单独使用. The primary goal of Anti-Grain Geometry is to brea ...