zoukankan      html  css  js  c++  java
  • (转)java 层调用Jni(Ndk) 持久化c c++ 对象

    对于Jni(Ndk) 很多人应该都有印象,Android的ndk接触到的机会相对会比较多,本例子以android平台为例,pc端的话就以简单的windows为例, 编码完用vs 或是 gcc进行编译成dll文件,扔到系统system32 , 就是环境变量配置的文件夹底下,linux 可能也差不多是这个意思,剩下的代码就跟android一样,进行加载这个动态链接库即可.

    这里就不做赘述,直接进入android平台的ndk开发,这里就主要讲下,Java层如何持久化c c++ 对象,场景可以是这样,假设你在c/c++层创建了一个对象(结构体),你下次还想继续使用怎么办,当然是要保存它了,那要怎么保存,这就要考虑怎么进行持久化它了,翻翻java或是android 很多源代码里面总会对一个long对象进行放置play.

    例如:

    没错,看似没什么特别的一个字段,其实就是底层的一个c/c++对象,比如图片里的mNativeBitmap 其实是c/c++里面的一个Bitmap对象,需要它时会在底层进行转型,可能说起来大家有点不明白  这里我就用代码来说明下.

    首先新建个 native 类:

    接着用工具生成头文件声明,这个自行百度解决,这里不做赘述,现在来展示下最主要的c/c++代码, 这里我使用c++编码.

    首先我创建了一个类,c里面就是结构体啦,用c++的语法创建对象就是用new了,那c就是malloc了,这个就不多做说明, 这里比较主要的两段代码时

    (jlong)person; 和  (Person *)nativeId;  

    这两段代码分别都是转型,一个是转换成jlong(也就是java里的long类型),从java层调用c++层接着返回jlong给java层的一个long对象进行持久化.使用时,在将这个long传到c++层进行强转成Person * , 这样就可以继续使用了. 这是一段很简单的代码, 但是确实很实用 ~

    源代码地址:http://download.csdn.net/detail/jue_dui_zhen_li/9570118

    出自:http://blog.csdn.net/jue_dui_zhen_li/article/details/51852438

  • 相关阅读:
    升级edk2源码的一点补充
    关于Ubuntu系统忘记密码的解决方法合集
    UEFI Shell 下的程序设计
    Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
    一个刚入行的BIOS工程师的自我简介
    反爬虫,非标准的json格式解析
    Scrapy+selenium爬取简书全站-爬虫
    Scrapy
    Python 爬取豆瓣电影Top250排行榜,爬虫初试
    Linux(Ubuntu) MySQL数据库安装与卸载
  • 原文地址:https://www.cnblogs.com/lihaiping/p/jni.html
Copyright © 2011-2022 走看看