JNI用javah命令生成头文件

以下代码在Android中JNI的使用之HelloWorld的基础上操作

Android中JNI的使用之HelloWorld

可以在Eclipse工具的android工程下–>右键android tools–>add native support,弹出一个窗体,然后自定义库名(xxx.so)–>点击Finish,会自动生成jni目录以及.cpp文件和Android.mk文件

2.4在工程的src目录下,在dos窗口使用javah命令 后面跟 MainActivity全路径(eg:com.example.jnitojavah.MainActivity),会在src目录下生成一个头文件(eg:com_example_jnitojavah_MainActivity.h)

这是javah指令操作
javah命令

*注意: 使用Javah生成jni头文件
javah jdk提供 来到你工程src目录
如果你的jdk版本是1.7 来到src目录生成
如果你的jdk版本是1.6 来到bin\class下生成*

2.5刷新项目,将src目录下的将头文件移动到jni目录下

JNI用javah命令生成头文件_第1张图片

3.打开头文件,复制如下代码到c文件中

JNIEXPORT jstring JNICALL Java_com_example_jnitojavah_MainActivity_javaFromCToJavah
  (JNIEnv *, jobject);

3.1将参数补全,这样就可以不用自己写(避免写错)

3.2在c文件中,引入自己生成的头文件(com_example_jnitojavah_MainActivity.h),因为自己生成的头文件已经是导入#include <jni.h>

注:<>与“”的区别,<>是导入外部的头文件,“”是导入自己的头文件

c代码

#include <stdio.h>
#include <stdlib.h>
#include "com_example_jnitojavah_MainActivity.h"

JNIEXPORT jstring JNICALL Java_com_example_jnitojavah_MainActivity_javaFromCToJavah
  (JNIEnv *env, jobject obj){

     return (*env)->NewStringUTF(env,"hello java");
}

你可能感兴趣的:(jni)