关于JNI的代码格式以及JNI的数据类型
来源:互联网 发布:无线鼠标品牌知乎 编辑:程序博客网 时间:2024/05/22 03:33
首先说说在C++代码中
(1)JNIEXPORT :在Jni编程中所有本地语言实现Jni接口的方法前面都有一个"JNIEXPORT",这个可以看做是Jni的一个标志,至今为止没发现它有什么特殊的用处。
(2)void :这个学过编程的人都知道,当然是方法的返回值了。
(3)JNICALL :这个可以理解为Jni 和Call两个部分,和起来的意思就是 Jni调用XXX(后面的XXX就是JAVA的方法名)。
(4)Java_com_test01_Test_firstTest:这个就是被上一步中被调用的部分,也就是Java中的native 方法名,这里起名字的方式比较特别,是:包名+类名+方法名。
(5)JNIEnv * env:这个env可以看做是Jni接口本身的一个对象,在上一篇中提到的jni.h头文件中存在着大量被封装好的函数,这些函数也是Jni编程中经常被使用到的,要想调用这些函数就需要使用JNIEnv这个对象。例如:env->GetObjectClass()。(详情请查看jni.h)
(6)jobject obj:
JNIEXPORT void JNICALLJava_/*包名*/_Test_testMethod(JNIEnv* env, jobject){ /* do something */}
比如在Test类的中有这样一段代码:
public class Test { public native void testMethod(); public static void main(String[] args) { System.loadLibrary("Jni01"); Test t = new Test(); t.firstTest(); }}
这个jobject需要两种情况分析。上段代码中firstTest方法是一个非静态方法,在Java中要想调用它必须先实例化对象,然后再用对象调用它,那这个时候jobject就可以看做Java类的一个实例化对象,也就是obj就是t。如果firstTest是一个静态方法,那么在Java中,它不是属于一个对象的,而是属于一个类的,Java中用Test.firstTest()这样的方式来调用,这个时候jobject就可以看做是java类的本身,也就是obj就是Test.class。
Jni中的数据类型
每一个Java的数据类型在Jni中都一个和它相对应的数据库类型,这样才能保证Java调用C或者C++的过程中数据的正确性。
打开Jni.h文件,有如下代码:
这里声明了所有Jni支持的数据类型,可以发现一个规律所有Jni的数据类型前面都有一个”J“字母,这样主要是为了好记。在Java中所有的对象都以引用的形式体现的,为了保持一致 所以在C与C++中使用了指针类型。Java与Jni中数据类型的对照表如下:
- 关于JNI的代码格式以及JNI的数据类型
- JNI数据类型的详解
- JNI数据类型的详解
- JNI的数据类型归纳
- JNI的数据类型
- 【Tech-Android-Jni】JNI的数据类型
- 关于java的JNI
- 关于Java的JNI
- 关于JNI的解析
- Android NDK JNI 的环境搭建以及简单的代码
- Android JNI和NDK学习(06)--JNI的数据类型
- Audio系统的JNI代码
- android JNI相关的代码
- Android的JNI数据类型的详解
- 关于JNI的本地引用
- 关于JNI的一点整理
- 关于jni的一点简介
- 关于JNI的使用总结
- Qt5_使用QtCreator来运行NS3的脚本
- Android主题样式之副作用
- python strip
- 如何快速入门Windows编程
- 如何编译andriod模块
- 关于JNI的代码格式以及JNI的数据类型
- 数组的相关运算
- LINUX 20个常用命令
- win7,win8,win10环境下如何使用dnw!
- OJ:line point 5
- 前端记住密码功能
- Installation failed with message INSTALL_FAILED_NO_MATCHING_ABIS.
- oracle根据逗号分割字符串
- 10本Java网站开发必看书籍,大神级别必修书籍,吐血推荐!!!