这是自己NDK开发得小记录,关于C++层读取java层传来的对象内容。

很简单的一个例子,
1、首先在java层定义了一个类NumList:
public class NumList {
    public int numOne;
    public int numTwo;
}
2、然后在C++层就可以这样:
extern "C"
jint Java_com_hoos_myapplication_MainActivity_test(
                JNIEnv *env,
                jobject,
                jobject mathTest,
                jint numSum) {
    //获得jfieldID以及该字段的初始值
    jclass cls = env->GetObjectClass(mathTest);  //获得Java层该对象实例的类引用,即NumList类引用

    // 获得得NumList类的属性id
    // 假如类内内容是字符串,"I"应该变为"Ljava/lang/String;",其他类型也需要相应更改
    jfieldID num1FieldId = env->GetFieldID(cls, "numOne","I");
    // 获得该属性的值
    jint javaNumOne = env->GetIntField(mathTest , num1FieldId);

    jfieldID num2FieldId = env->GetFieldID(cls, "numTwo" , "I");
    jint javaNumTwo = env->GetIntField(mathTest ,num2FieldId);

    return javaNumOne + javaNumTwo;
}
3、在java层就可以调用C++方法, 传入NumList类对象进去, 该方法就会返回这两个数的和了。
 
 
 
 
 
 
 

NDK开发小记录 C++读取java层对象内容的更多相关文章

  1. Android Studio NDK 开发 问题记录

    Android NDK 开发 问题解决 编译:找不到gles3库 使用旧的编译方式,写Android.mk 进行编译.报错如下 gles3/gl3.h no such file or director ...

  2. 开发错误记录13:java.lang.UnsatisfiedLinkError: Couldn't load xxx.so: findLibrary returned null

    今天在导入环信开发包时,编译报如下错: java.lang.UnsatisfiedLinkError: Couldn't load hyphenate_av from loader dalvik.sy ...

  3. android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值

    1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanF ...

  4. JAVA 判断对象内容是否含有空值

    简单判断对象是否含有NULL值,以及信息描述. package com.sicdt.sicsign.bill.api.util; import java.lang.reflect.Invocation ...

  5. Android NDK开发之从环境搭建到Demo级十步流

    写在正文之前: 几个月没有更新博客,感觉有点生疏了,所以说不能断,一断人就懒. 其实这几个月也并不是什么事也没有做,俺可是时刻想着今年的任务呢,10本书,30篇博文...,这几个月间断性的也是在学习中 ...

  6. android java层实现hook替换method

    Android上的热修复框架 AndFix 大家都很熟悉了,它的原理实际上很简单: 方法替换——Java层的每一个方法在虚拟机实现里面都对应着一个ArtMethod的结构体,只要把原方法的结构体内容替 ...

  7. Android NDK开发(五)--C代码回调Java代码【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41862479 在上篇博客里了解了Java层是怎样传递数据到C层代码,并且熟悉了大部 ...

  8. Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目

    http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application  shang  2年前 (2013-03-28) ...

  9. Android NDK 开发(四)java传递数据到C【转】

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处 ...

随机推荐

  1. 网络基础一 交换机 路由器 OSI7层模型

    第1章 网络基础 1.1 网络的出现 解决计算机通讯的需求 实现计算机信息可以传递 1.2 主机之间实现通讯基本要求(三要素) ①. 需要在两台主机之间建立物理连接,物理连接的方式有网线 光纤线 wi ...

  2. html的块级元素和内联元素

    常用的块级元素: address , center , div , dl ,, form , h1 , h2 , h3 , h4 , h5 , h6 , menu , ol , p , table , ...

  3. 大家好,我是ZCDHJ

    大家好,我是ZCDHJ.CJ C2017级的一名Oier.

  4. CopyOnWriteArrayList并发容器

    CopyOnWriteArrayList并发容器 Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才 ...

  5. Python入门学习(二)

    1 字典 1.1 字典的创建和访问 字典不同于前述的序列类型,它是一种映射类型.它的引入是为了简化定义索引值和元素值存在特定关系的定义和访问问题. 字典的定义形式为:字典变量名 = {key1:val ...

  6. ASP.NET Core集成现有系统认证

    我们现在大多数转向ASP.NET Core来使用开发的团队,应该都不是从0开始搭建系统,而是老的业务系统已经在运行,ASP.NET Core用来开发新模块.那么解决用户认证的问题,成为我们的第一个拦路 ...

  7. 使用c#操作txt

    如何读取文本文件内容: 在本文介绍的程序中,是把读取的文本文件,用一个richTextBox组件显示出来.要读取文本文件,必须使用到"StreamReader"类,这个类是由名字空 ...

  8. [转]如何查询SQL Server连接数

    1.获取SQL Server允许同时用户连接的最大数 SELECT @@MAX_CONNECTIONS 2.获取当前指定数据库的连接信息 SELECT * FROM master.dbo.syspro ...

  9. C语言系列之强制类型转换(一)

    例子: #include <stdio.h> { char cChar;   //字符型变量 short int iShort; //短整型变量 int ilnt;           / ...

  10. WebView之js调用Android类的方法传递数据

    1,具体的思路如下: 在android中写一个Activity,里面写一个webview,这个webview加载本地的一个html文件,显示这个网页,这个网页包括一个用户名和密码的输入框和两个按钮(只 ...