[java]代码库
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, 2, 3, 4, 5, 8, 13});
System.out.println("intMethod: " + square);
System.out.println("booleanMethod: " + bool);
System.out.println("stringMethod: " + text);
System.out.println("intArrayMethod: " + sum);
}
}
//c语言版
---------------------- -
#include "Sample1.h"
#include <string.h>
JNIEXPORT jint JNICALL Java_Sample1_intMethod
(JNIEnv * env, jobject obj, jint num) {
return num * num;
}
JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod
(JNIEnv * env, jobject obj, jboolean boolean) {
return !boolean;
}
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod
(JNIEnv * env, jobject obj, jstring string) {
const char * str = ( * env)->GetStringUTFChars(env, string, 0);
char cap[128];
strcpy(cap, str);
( * env)->ReleaseStringUTFChars(env, string, 0);
return ( * env)->NewStringUTF(env, strupr(cap));
}
JNIEXPORT jint JNICALL Java_Sample1_intArrayMethod
(JNIEnv * env, jobject obj, jintArray array) {
int i, sum = 0;
jsize len = ( * env)->GetArrayLength(env, array);
jint * body = ( * env)->GetIntArrayElements(env, array, 0);
for (i = 0; i < len; ++i) {
sum += body[i];
}
( * env)->ReleaseIntArrayElements(env, array, body, 0);
return sum;
}
//c++语言版
---------------------- -
#include "Sample1.h"
#include <string.h>
JNIEXPORT jint JNICALL Java_Sample1_intMethod
(JNIEnv * env, jobject obj, jint num) {
return num * num;
}
JNIEXPORT jboolean JNICALL Java_Sample1_booleanMethod
(JNIEnv * env, jobject obj, jboolean boolean) {
return !boolean;
}
JNIEXPORT jstring JNICALL Java_Sample1_stringMethod
(JNIEnv * env, jobject obj, jstring string) {
const char * str = env->GetStringUTFChars(string, 0);
char cap[128];
strcpy(cap, str);
env->ReleaseStringUTFChars(string, 0);
return env->NewStringUTF(strupr(cap));
}
JNIEXPORT jint JNICALL Java_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 < len; ++i) {
sum += body[i];
}
env->ReleaseIntArrayElements(array, body, 0);
return sum;
}