摘要:写例程之前先介绍一下代码目录结构吧,以免后面发生找不到library库的路径 so文件需要与java目录的根目录同级 error1:Error: Could not find or load main class com.clay.example.sample1 error2:Exception i
阅读全文
随笔分类 - JNI
摘要:写例程之前先介绍一下代码目录结构吧,以免后面发生找不到library库的路径 so文件需要与java目录的根目录同级 error1:Error: Could not find or load main class com.clay.example.sample1 error2:Exception i
阅读全文
摘要:JNI 函数(八)反射支持、获取虚拟机 一、反射支持 如果程序员知道方法和属性的名称和类型,则直接使用 JNI 调用 Java 方法或者访问 Java 字段。Java 核心反射 API 允许在运行时反射 Java 类。JNI 提供了 JNI 中使用的字段和方法 ID 与 Java Core Refl
阅读全文
摘要:JNI 函数(七)NIO 操作 NIO 相关操作允许 Native 代码直接访问 java.nio 的直接缓冲区。直接缓冲区的内容可能存在于普通的垃圾回收器以外的本地内存。有关直接缓冲区的信息,可以参考 NIO 和 java.nio.ByteBuffer 类的规范。 在 JDK/JRE 1.4 中引
阅读全文
摘要:JNI 函数(六)系统级别的操作 (一) 注册方法 函数原型:jint RegisterNatives(JNIEnv *env, jclass clazz, const JNINativeMethod *methods, jint nMethod); 根据 clazz 参数注册本地方法,method
阅读全文
摘要:JNI 函数(五)数组操作 (一)、获取数组的长度 函数原型:jsize GetArrayLength(JNIEnv *env, jarray array) 返回数组的长度 参数: env:JNI 接口指针 array:Java 数组 返回: 数组的长度 (二)、创建对象数组 函数原型:jobjec
阅读全文
摘要:JNI 函数(四)字符串操作 (一)、创建一个字符串 函数原型:jstring NewString(JNIEnv *env, const jchar *unicodeChars, jszie len); 参数: env:JNI 接口指针 unicodeChars:指向 Unicode 字符串的指针
阅读全文
摘要:JNI 函数(三)对象操作 (一)、直接创建一个 Java 对象 函数原型:jobject AllocObject(JNIEnv *env, jclass clazz); 不借助任何构造函数的情况下分配一个新的 Java 对象,返回对象的一个引用。 参数: env:JNI 接口指针 clazz::J
阅读全文
摘要:JNI 函数(二)全局及局部引用 (一)、创建全局引用 函数原型:jobject NewGlobalRef(JNIEnv *env, object obj); 给对象 obj 创建一个全局引用,obj 可以是全局或局部引用。全局引用必须通过 DeleteGlobalRef() 显示处理。 参数: e
阅读全文
摘要:JNI 函数(一)版本信息、类操作、异常 一、版本信息 GetVersion 返回本地方法接口的版本。 函数原型:jint GetVersion(JNIEnv* env); 参数 env:JNI 接口指针。 返回值: 高 16 位返回主版本号,低 16 位返回次版本号。 在 JDK1.1 中,Get
阅读全文
摘要:<jni.h> 全面剖析 文章链接:JNI 函数(一)版本信息、类操作、异常 文章链接:JNI 函数(二)全局及局部引用 文章链接:JNI 函数(三)对象操作 文章链接:JNI 函数(四)字符串操作 文章链接:JNI 函数(五)数组操作 文章链接:JNI 函数(六)系统级别的操作 文章链接:JNI
阅读全文
摘要:JNI 的学习(三)JNI 层访问 Java 端对象 前面两篇文章简单介绍了 JNI 层跟 Java 层的一些对应关系,包括方法名,数据类型和方法名称等,相信在理论层面,能够很好地帮助我们去了解 JNI 在 Native 本地开发中的作用,对 JNI 的一些概念也有了一个初步的认识 概念上的理解有助
阅读全文
摘要:JNI 的学习(二)对于 JNI 数据类型、方法名和方法签名的一些认识 我们知道,利用 javah 生成的 c/c++ 头文件的时候,会对 java 中定义的 native 函数生成对应的jni层函数,如下: 1 #ifndef _Included_com_clay_example_JNITest
阅读全文
摘要:JNI 的学习(一)对于 JNIEnv 的一些认识 Java 通过 JNI 机制调用 c/c++ 写的 native 程序。c/c++ 开发的 native 程序需要遵循一定的 JNI 规范,下面的例子就是一个 JNI 函数声明: 1 JNIEXPORT jstring JNICALL Java_c
阅读全文
摘要:AndroidStudio 配置NDK/JNI开发环境 1、新建你的 AS 工程 2、在 AndroidStudio 中配置 NDK 路径 方法如下: (1)先下载NDK并安装(这句基本是废话); (2)点菜单栏的 File->ProjectStructure…-> 在打开的窗口中左侧选中 SDKL
阅读全文
摘要:1、javah命令帮助信息 用法:javah [选项] <类> zhengchuanyu@CLAY:~/Projects/helloworldJNI/src$ javah Usage: javah [options] <classes> where [options] include: -o <fi
阅读全文
摘要:JNI是JAVA标准平台中的一个重要功能,它弥补了JAVA的与平台无关这一重大优点的不足,在JAVA实现跨平台的同时,也能与其它语言(如C、C++)的动态库进行交互,给其它语言发挥优势的机会。 有了JAVA标准平台的支持,使JNI模式更加易于实现和使用。在此总结了下面这个知识图: 实例: 环境说明:
阅读全文
|