android c混合编程,C++在JavaAndroid和Objective-C三大平台下实现混合编程.doc

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

本文主要介绍C/C++在Java、Android和Objective-C三大平台下实现混合编程,这里举例说明实现不同平台用C/C++实现编程的方法,有兴趣的小伙伴可以参考下

Android和iOS开发都支持C++开发,可以一套代码多平台使用。同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率。

一、为什么使用C/C++

便于移植,用C/C++写得库可以方便在其他的平台上再次使用。

代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大。

提高程序的执行效率,将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率。

访问现有开源库,需要访问底层的API或引用一些只有C/C++的库。

二、开发工具介绍

尽管Android Studio可以同时编写C++和Java代码,写完就可以编译运行,但是对联想和错误提示并不是非常友好,个人建议C++的整体代码使用Visual Studio或Xcode编译开发,联想功能非常友好,编译速度很快,调试也非常方便。

Visual Studio(PC)

Xcode(Mac)

Android Studio(多平台)

eclipse(多平台)

三、第一行代码

1. 如何在Objective-C项目中使用C++;

在Objective-C使用C/C++非常简单,仅仅需要把.m后缀的文件改成.mm即可使用C++,我们通常不会把.mm的文件写到整个项目都有,而是设计一个接口,用来做两个语言之间的桥梁,他们之间的交互仅仅在这个接口。

要点:String类型转换

1

2

3

4

5

6

7

8// Objective-C(NSString) -> C++(std::string)

NSString * ocString = @"Hello World,OC";

std::string cppString = [ocString UTF8String];

std::cout<

// C++(std::string) -> Objective-C(NSString)

std::string cppString2 = "Hello World,C++";

NSString *ocString2= [NSString stringWithCString:cppString2.c_str() encoding:[NSString defaultCStringEncoding]];

NSLog(@"%@",ocString2);记得要include相关的文件

#include #include

2.在普通的JAVA项目中使用JNI编程

由于我是在MAC下办公,所以这里就介绍如何在MAC下进行JNI开发,在Windows平台下的Virtual Studio也很简单。

第一步:在Xcode下创建一个普通的C++项目

第二步:关联JavaVM的Framework

路径:

/System/Library/Frameworks/JavaVM.framework/Frameworks/JavaNativeF.framework/

第三步:创建头文件,用于和Java交互 cn_taoweiji_nativemodule_NativeDemo.h

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20#include

#ifndef _Included_cn_taoweiji_nativemodule_NativeDemo

#define _Included_cn_taoweiji_nativemodule_NativeDemo

#ifdef __cplusplus

extern "C" {

#endif

JNIEXPORT jint JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_add

(JNIEnv *, jclass, jint, jint);

JNIEXPORT void JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_say

(JNIEnv *, jclass, jstring);

JNIEXPORT jstring JNICALL Java_cn_taoweiji_nativemodule_NativeDemo_getInfo

(JNIEnv *, jclass);

JN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值