1. 程式人生 > >JNI用javah命令生成標頭檔案

JNI用javah命令生成標頭檔案

以下程式碼在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目錄下

這裡寫圖片描述

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"); }