JNI之路径初探---2

作者: markRao | 来源:发表于2017-06-15 22:33 被阅读49次

上一篇博客写的是Java调用C、C++的例子,本篇就演示一下C、C++怎么调用Java的属性和方法。

Java代码中提供一个静态方法给C、C++调用 C、C++代码
一些具体的操作细节在第一篇博客就写的比较详细了,这里就不再重复了,值得一提的是我们这里在Java层加载的动态库(动态链接库)
static{
System.loadLibrary("动态库名称");
}
在window下的动态库是.dll文件格式的,静态库是.a,动态库不会被压缩到.exe文件中,但是我们安卓开发是基于linux内核的,所以我们使用的动态库文件是.so文件格式,细心的读者也许就发现了为什么我们每次Java调用C、C++或者C、C++调用Java的静态和普通的属性、方法都一定要先通过(env)->来得到jclass,而且在JNI中方法都通过(env)->来调用方法,其实也不难猜出,属性和方法被调用和操作一定是暴露了内存地址(指针),我们编写C、C++文件来实现Native方法来生成.so文件供调用,其实也就变相说明了.so文件和.dex(Java代码打包)处于同一进程中,要不然也没有办法来交互,那么当.dex和.so文件被加载到Dailvik VM中时他们就是通过虚拟机的函数表来交互的,其实(*env)->就是一个虚拟机的函数表指针。

相关文章

  • JNI之路径初探---2

    上一篇博客写的是Java调用C、C++的例子,本篇就演示一下C、C++怎么调用Java的属性和方法。

  • JNI之路径初探---5

    本篇文章讲解JNI接收处理完从Java层传递的数据后内存的同步问题。 qsort是一个C语言的排序函数,这不是我们...

  • JNI之路径初探---3

    本篇简述如何在JNI下调用父类方法 这里讲一下如何拿到类中方法和属性的签名:1,cmd进入命令行2,cd 命令切到...

  • JNI之路径初探---4

    本篇文章讲解如何处理JNI下返回字符串乱码 代码比较简单,也不再详细说明,适合有C、C++和JNI基础的同学学习。

  • JNI之路径初探---1

    首先要明白,什么是JNI,我们做安卓开发为什么要学习JNI,学习JNI能干嘛?JNI全称Java Native I...

  • JNI之路径初探---6

    本篇文章讲解JNI下属性的内存释放问题,众所周知,JAVA有四大引用,1,强引用2,弱引用3,软引用4,虚引用。J...

  • 初探JNI

    JNI搭建 1.下载ndk ,ndk大于r7则直接解压 2.eclipse 给定ndk 路径 3.新建项目后配置n...

  • JNI初探

    NDK产生背景 Android平台从诞生起,就已经支持C、C++开发。众所周知,Android的SDK基于Java...

  • JNI系列入门之C语言与Java的双向通信(二)

    JNI系列文章:JNI系列之入门Hello JNI C(一)JNI系列之入门Hello JNI C(二)JNI系列...

  • JNI系列入门之Hello JNI C(二)

    JNI系列文章:JNI系列之入门Hello JNI C(一)JNI系列之入门Hello JNI C(二)JNI系列...

网友评论

    本文标题:JNI之路径初探---2

    本文链接:https://www.haomeiwen.com/subject/xdayqxtx.html