![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jni
穿斗牛士衣服的v
这个作者很懒,什么都没留下…
展开
-
01 jni简介
因为项目中常常需要使用android和底层c交互,所以找个时间,整理一下JNI知识点。参考:https://www.cnblogs.com/shaweng/p/4013320.html什么是jni?JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为jav...转载 2019-05-26 11:36:27 · 82 阅读 · 0 评论 -
02 jni基本变量与转换
基本类型的 java 与 c 对照图Java 类型 本地 C 类型 实际表示的 C 类型 (Win32) 说明 boolean jboolean unsigned char 无符号,8 位 byte jbyte signed char 有符号,8 位 char jchar unsigned short...转载 2019-05-26 11:37:17 · 513 阅读 · 0 评论 -
02-1 jstring与char*,string的转换
jstring与char*的转换一、 jstring ==> char*jstring jstr;const char *str = (*env)->GetStringUTFChars(env, prompt, 0);printf("%s", str);(*env)->ReleaseStringUTFChars(env, prompt, str);...转载 2019-05-26 11:38:18 · 455 阅读 · 0 评论 -
03 jni 编写
本地方法实现可以由C或C++来实现。C语言版本:jdouble native_fun (JNIEnv *env, /* interface pointer */ 通过vm环境的指针对java操作jobject obj, /* "this" pointer */ 调用方法的对象jint i, /* argument #1 */jstring s) /* argumen...转载 2019-05-26 11:38:59 · 122 阅读 · 0 评论 -
04 jni调用java方法
JNI本地方法访问Java属性和方法在JNI调用中,不仅仅Java可以调用本地方法,本地代码也可以调用Java中的方法和成员变量。在Java1.0中“原始的”Java到C的绑定中,程序员可以直接访问对象数据域。然而,直接方法要求虚拟机暴露他们的内部数据布局,基于这个原因,JNI要求程序员通过特殊的JNI函数来获取和设置数据以及调用java方法。取得代表属性和方法的jfieldI...转载 2019-05-26 11:39:41 · 389 阅读 · 0 评论 -
05 子线程findclass
JNI子线程FindClass失败1、在C语言里创建子线程 在进行jni开发时,Java调用C语言一般都处于主线程中的,但是使用JNI开发,很多情况都是需要开启子线程的(毕竟不能阻塞主线程),那么如何开启子线程尼?很简单,代码如下:void void *th_fun(void *arg) {} //是子线程的回调函数pthread_create(&tid,...转载 2019-05-26 11:40:21 · 437 阅读 · 0 评论 -
06 jni编译与调用
加载和链接本地方法在Java里通过System.loadLibrary()来加载动态库,但是,动态库只能被加载一次,因此,通常动态库的加载放在静态初始化语句块中。package pkg;class Cls {native double f(int i, String s); // 声明为本地方法static {System.loadLibrary(“pkg_Cls”);...转载 2019-05-26 11:41:00 · 121 阅读 · 0 评论