JNI支持C++与C的区别

1. C++的代码后缀是".cpp"

2. 在JNI.h 文件中有两套代码。一套是支持c的, 一套是支持JNI的。

  JNI。h地址:mac ? 用户 ? douj ? Documents ? android-ndk-r10b ? platforms ? android-8 ? 

  JNI中针对C的代码是:

  jstring     (*NewStringUTF)(JNIEnv*, const char*);

  C中调用方式:

  (*env)->NewStringUTF(env,"haha from c");

  JNI中针对C++的代码是:

jstring NewStringUTF(const char* bytes)

{ return functions->NewStringUTF(this, bytes); }

  C++中调用方式

JNIEXPORT jstring JNICALL Java_cn_itcast_cpp_DemoActivity_helloInC
  (JNIEnv * env, jobject obj){
     return      env->NewStringUTF("haha from c");
}

 

3. 修改 Android.mk 文件

  LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)
   #针对C++的支持,标记c++文件的扩展名名称
   LOCAL_CPP_EXTENSION := cpp 

   #打的包模块名称。 会根据这个生成libHello.so库。
   LOCAL_MODULE    := Hello
   LOCAL_SRC_FILES := Hello.cpp #需要编译的相关C、c++ 代码
   # 日志支持
   LOCAL_LDLIBS += -llog
   include $(BUILD_SHARED_LIBRARY)

4. C++的优势

  不需要的函数参数名称可以不命名参数。

时间: 2024-10-14 01:49:04

JNI支持C++与C的区别的相关文章

Android jni/ndk编程三:native访问java

一.访问静态字段 Java层的field和method,不管它是public,还是package.private和protected,从 JNI都可以访问到,Java面向语言的封装性不见了. 静态字段和非静态的字段访问方式不同,jni规范提供了一系列带static标示的访问静态字段的函数: jobject (*GetStaticObjectField)(JNIEnv*, jclass, jfieldID); jboolean (*GetStaticBooleanField)(JNIEnv*, j

解析Java的JNI编程中的对象引用与内存泄漏问题

JNI,Java Native Interface,是 native code 的编程接口.JNI 使 Java 代码程序可以与 native code 交互--在 Java 程序中调用 native code:在 native code 中嵌入 Java 虚拟机调用 Java 的代码.JNI 编程在软件开发中运用广泛,其优势可以归结为以下几点: 利用 native code 的平台相关性,在平台相关的编程中彰显优势. 对 native code 的代码重用.native code 底层操作,更

JNI官方文档翻译3-基本数据类型 字符串 数组

在使用JNI的时候,你问的最多的问题莫过于 Java的数据类型和C/C++的数据类型怎么一对一映射.在我们的HelloWord例子当中,我们并没有传入任何参数给我们的java层print方法,native方法也并没有返回任何数据而是void,本地方法只是简单的打印一个字符串,然后就返回了.实际开发中我们都需要传入参数,返回参数,本章就会讨论如何从java层向底层传数据,以及如何从底层向java层返回数据.我们从基本数据类型 字符串 数组开始, 下一章再介绍如何传任意类型的数据,以及如何访问他们的

Antelope 和Barracuda区别

Antelope是innodb-base的文件格式, Barracude是innodb-plugin后引入的文件格式,同时Barracude也支持Antelope文件格式.两者区别在于: 文件格式 支持行格式 特性 Antelope (Innodb-base) ROW_FORMAT=COMPACT ROW_FORMAT=REDUNDANT Compact和redumdant的区别在就是在于首部的存存内容区别. compact的存储格式为首部为一个非NULL的变长字段长度列表 redundant的

JNI/NDK开发指南(四)——字符串处理

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42066665 从第三章中可以看出JNI中的基本类型和Java中的基本类型都是一一对应的,接下来先看一下JNI的基本类型定义: typedef unsigned char jboolean; typedef unsigned short jchar; typedef short jshort; typedef float jfloat; typedef double jdouble; ty

nand flash 和nor flash 区别

NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级.但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存. 相"flash存储器"经常可以与相"NOR存储器"互换使用.许多业内人士也搞不清楚NAND闪存技术

Java本地接口JNI详解

对于java程序员来说,java语言的好处和优点,我想不用我说了,大家自然会说出很多一套套的.但虽然我们作为java程序员,但我们不得不承认java语言也有一些它本身的缺点.比如在性能.和底层打交道方面都有它的缺点.所以java就提供了一些本地接口,他主要的作用就是提供一个标准的方式让java程序通过虚拟机与原生代码进行交互,这也就是我们平常常说的java本地接口(JNI--java native Interface).它使得在 Java 虚拟机(VM) 内部运行的Java 代码能够与用其它编程

Java系列之JDBC和ODBC之间的区别与联系

JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,它是Java十三个规范之一.可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名. ODBC简介 开放数据库互连(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA

(三)NAND flash和NOR flash的区别详解

我们使用的智能手机除了有一个可用的空间(如苹果8G.16G等),还有一个RAM容量,很多人都不是很清楚,为什么需要二个这样的芯片做存储呢,这就是我们下面要讲到的.这二种存储设备我们都统称为“FLASH”,FLASH是一种存储芯片,全名叫Flash EEPROM Memory,通地过程序可以修改数据,即平时所说的“闪存”.Flash又分为NAND flash和NOR flash二种.U盘和MP3里用的就是这种存储器. 相“flash存储器”经常可以与相“NOR存储器”互换使用.许多业内人士也搞不清