1. 接下来我们细讲分析一下前面一讲中,c功能实现的代码:

(1)hello.c :

 #include <jni.h>

 char* getHello()
{
////////
return "hello Android From C";
} //jni协议给java调用
// 返回类型 方法名(Java_包名(使用"_"把包名分割)_类名_方法名 (参数) //JNIEnv* env jni的结构体数据,jni系统实现 ; obj java对象 调用该jni方法的对象
jstring Java_com_himi_helloworld_MainActivity_getHelloFromC(JNIEnv* env, jobject obj)
{
char* res = getHello();//获取到C代码字符串结果
/**
* (**env).GetVersion(env);
* (*env)->GetVerison(env);
*/
//jstring (*NewStringUTF)(JNIEnv*, const chat*);
jstring jres = (**env).NewStringUTF(env,res); return jres;
}

• jstring :数据类型就是 void*(指向一个空区域,初始化的指针)

在jni.h文件下:

typedef  void*      jobject;

typedef  jobject    jclass;

typedef  jobject    jstring;

• JNIEnv* env :

JNINativeInterface  struct     :说明JNINativeInterface是个结构体

typedef const  struct  JNINativeInterface*  JNIEnv;  :说明JNIEnv是个结构体指针(这个结构体就是JNINativeInterface)

这个时候JNIEnv* env等价于:

JNINativeInterface**  env; :也就是env定义为结构体指针的指针(双重指针)

如果想利用env访问JNINativeInterface结构体的成员NewStringUTF(只不过这里的NewStringUTF是一个函数指针)

(**env).NewStringUTF(JNIEnv*, const char*);

最新文章

  1. oracle如何清空一个用户下的所有表中的数据?
  2. Python: Lambda Functions
  3. hdoj 5349 MZL&#39;s simple problem
  4. header页头内容整理
  5. 基于Networks of Brokers的HA方案
  6. 一个想法(续六):IT联盟创业计划:如何进行找钱、寻人、做事?
  7. 【原】Java学习笔记026 - 集合
  8. 学习笔记3-开发与运行(卸载)第一个ANDROID应用
  9. iOS中关于UIApplication的详细介绍
  10. ImCash:第一个集多功能于一身的数字资产平台
  11. mvc 之 学习地址
  12. 测试工具之Jmeter(各部件简单介绍)
  13. SVM笔记
  14. ValueError: total size of new array must be unchanged
  15. ext2文件系统学习(二)—— 目录磁盘结构
  16. 20145208 蔡野 《网络对抗》Exp6 信息搜集与漏洞扫描
  17. OpenGL ES 2 for Android - A Quick Start Guide
  18. The Seven Percent Solution
  19. 从零开始学习html(十)CSS格式化排版——上
  20. Java-JUC(五):闭锁(CountDownLatch)

热门文章

  1. YTU 2979: MathBook类--多态
  2. 为ios app添加广告条
  3. I.MX6 Android stlport 使用
  4. c#网格控件,Excel控件
  5. Vue.js:安装node js到构建一个vue并启动它
  6. 【196】Dell 移动工作站系统安装方法
  7. asp.net Identity2 角色(Role)的使用(一)初始配置
  8. bzoj 4320: ShangHai2006 Homework【分块】
  9. 洛谷 P3622 [APIO2007]动物园【状压dp】
  10. 《windows核心编程系列》十九谈谈使用远程线程来注入DLL。