test.cpp に単純な jni 関数があります。
#include <jni.h>
#include <stdio.h>
extern "C" {
JNIEXPORT jint JNICALL Java_dri_put(JNIEnv* env, jstring js, jint ji){
printf("%d \n", ji);
int t = ji;
printf("%d \n", t);
int k = -3412;
return k;
}
}
私のJavaクラスjavatest.java:
public class javatest {
public static void main(String args[]) {
System.loadLibrary("test");
int t = 134;
int k = dri.put("a", 5641);
System.out.println(k);
}
}
出力は、渡された整数の乱数を出力するだけです:
1075968840
1075968840
-3412
ただし、ジントを jdouble に変更して Java double 変数を渡すと、問題なく動作します。ここで助けていただければ幸いです。
dri Java クラスは次のとおりです。
public class dri
{
public final static native int put(String jarg1, int jarg2);
}
sizof(int) は私のマシンで 4 バイトになります (red-hat)