Objective-C 调用C++,C
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的更多相关文章
- js与objective-c的交互-备
在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Ob ...
- Object-C与Swift混合开发
Object-C作为Apple的iOS App开发语言服务了很多个年头,2014年Apple推出了新的编程语言Swift.更高效更安全的口号再次吸引了一大批非iOS开发程序猿进入,小编觉得Swift代 ...
- IOS开发之——objective-c与javascript交互
原文:http://blog.csdn.net/pjk1129/article/details/6936545 在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要 ...
- iOS js与objective-c的交互(转)
在写 JavaScript 的时候,可以使用一个叫做 window 的对象,像是我们想要从现在的网页跳到另外一个网页的时候,就会去修改 window.location.href 的位置:在我们的 Ob ...
- Optaplanner与Google OR-Tools的区别
在规划相关的项目工作中,近两年我们的项目主要使用的是Optaplanner作为规划引擎,其核心也是一个的规划求解器(Solver).但作为另一个著名开源求解器Google OR-Tools(下称OR- ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
- 黑马毕向东Java基础知识总结
Java基础知识总结(超级经典) 转自:百度文库 黑马毕向东JAVA基础总结笔记 侵删! 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部 ...
- 《果壳中的C# C# 5.0 权威指南》 - 学习笔记
<果壳中的C# C# 5.0 权威指南> ========== ========== ==========[作者] (美) Joseph Albahari (美) Ben Albahari ...
- [Objective C]super dealloc 调用时机
转自:http://dcm19872007.blog.163.com/blog/static/86519374201311953739818/ objective-c 语言中最头疼的事就是内存释放,申 ...
- Unity3D脚本调用Objective C代码实现游戏内购买
0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...
随机推荐
- WINCE6.0 error C2220: warning treated as error问题解决
今天在编译IMX515的BSP的时候,发现下面的编译错误问题: BUILD: [00:0000002476:PROGC ] BuildingCOMPILE Pass in F:\WINCE600\PL ...
- C#中的多文档的使用
1.首先,新建一个窗体,设置窗体的IsMdiContainer = true; 窗体的大小为700*600 长700 高600 2.在窗体的Load事件中添加如下代码 private void F ...
- 宏HASH_DELETE
HASH_DELETE(buf_page_t, hash, buf_pool->page_hash, fold, bpage); NAME 可理解为 void* next /********** ...
- Terrocotta - 基于JVM的Java应用集群解决方案
前言 越来越多的企业关键应用都必须采用集群技术,实现负载均衡(Load Balancing).容错(Fault Tolerance)和灾难恢复(Failover).以达到系统可用性(High Avai ...
- HTTP编程(六)
此为网络编程的一个系列,后续会把内容补上.....
- OK335xS can't reset with reboot
/*********************************************************************** * OK335xS can't reset * 说明: ...
- [html5] (Notification) 桌面通知
前几天要做一个桌面通知的功能,翻查以前做的笔记,发现webkitNotifications这个已经不能用了,baidu了下,基本都是介绍webkitNotifications的,后来在SOF上找到答案 ...
- ubuntu设置ip和dns
装完ubuntu 第一件事情就是连上网,换个源,进行更新操作,但前提条件是要配好ip和dns. 下面把自己配置的过程记录下来,权且当作一份备份,以便不时之需. 一.配置ip ub ...
- Innodb buffer pool/redo log_buffer 相关
InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理.在数据库系统中,由于CPU速度和磁盘速度之前的鸿沟,通常使用缓冲池技术来提高数据库的整体性能. 1. Innodb_buffe ...
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]PrI.6.1
Given a basis $U=(u_1,\cdots,u_n)$ not necessarily orthonormal, in $\scrH$, how would you compute th ...