JNI 实践

安装环境 vs2008 eclipse JDK1.6
java 类
第一步:java类
package JNI;
public class Sample1 {
public native int intMethod(int n);
public native boolean booleanMethod(boolean bool);
public native String stringMethod(String text);
public native int intArrayMethod(int[] intArray);
public static void main(String[] args) {
System.loadLibrary("Sample1");
Sample1 sample = new Sample1();
int square = sample.intMethod(5);
boolean bool = sample.booleanMethod(true);
String text = sample.stringMethod("JAVA");
int sum = sample.intArrayMethod(new int[] { 1, 1, 2, 3, 5, 8, 13 });
System.out.println("intMethod: " + square);
System.out.println("booleanMethod: " + bool);
System.out.println("stringMethod: " + text);
System.out.println("intArrayMethod: " + sum);
}
}

第二步编译产生class文件

\myTools\src\JNI> javac Sample1.java


第三步产生头文件


\myTools\bin> javah -classpath ./ JNI.Sample1

第4步 使用c++实现 头文件中的方法
#include "JNI_Sample1.h"
#include <stdio.h>
#include <string.h>
JNIEXPORT jint JNICALL Java_JNI_Sample1_intMethod
  (JNIEnv *env, jobject obj, jint num) {
   return num * num;
}
JNIEXPORT jboolean JNICALL Java_JNI_Sample1_booleanMethod
   (JNIEnv *env, jobject obj, jboolean boolean) {
   return !boolean;
}
JNIEXPORT jstring JNICALL Java_JNI_Sample1_stringMethod
   (JNIEnv *env, jobject obj, jstring string) {
     const char *str = env->GetStringUTFChars(string, 0);
     char cap[128];
     strcpy(cap, str);
     env->ReleaseStringUTFChars(string, str);
     return env->NewStringUTF(strupr(cap));
}
JNIEXPORT jint JNICALL Java_JNI_Sample1_intArrayMethod
   (JNIEnv *env, jobject obj, jintArray array) {
     int i, sum = 0;
     jsize len = env->GetArrayLength(array);
     jint *body = env->GetIntArrayElements(array, 0);
     for (i=0; i<10;i++)
     {   sum += body[i];
     }
     env->ReleaseIntArrayElements(array, body, 0);
     return sum;
}
准备工作
注册vs2008的cl命令
   call "%VS90COMNTOOLS%"vsvars32.bat

复制JDK下的三个头文件 到 vs2008安装目录
jdk1.6.0_10\include\jni.h
jdk1.6.0_10\include\win32\jawt_md.h
jdk1.6.0_10\include\win32\jni_md.h
C:\Program Files\Microsoft Visual Studio 9.0\VC\include

第5步执行 cl  -LD Sample1.cpp -FeSample1.dll


然后把 生成的dll库放到eclipse的工程根目录下




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值