我现在一直在寻找如何解决这个问题,但我发现没有什么能正确回答这个问题。我想我很亲密;我想要一个jint *和一个int *,以及使用(* env) - > SetIntArrayRegion(...)函数,
// This function will take an array of global integers that already exist in the
// c-side of the program, we'll call them 'data_ints[91]' (there are 91 just to clarify.)
/*...*/
int data_ints[] = {1,2,3,4,/*...*/90,91};
JNIEXPORT jintArray JNICALL Java_MarsRoverGUI_getData
(JNIEnv *, jobject, jint)
{
jintArray out_ints;
jint *outElements;
int i;
out_ints = (*env)->NewIntArray(env, 91);
outElements = (*env)->GetIntArrayElements(env,out_ints,0);
for (i = 0; i < 91; i++)
{
outElements[i] = data_ints[i];
}
(*env)->ReleaseIntArrayElements(env,out_ints,outElements,0);
// returns data_ints as a jintArray
return out_ints;
}
我离我有多近?我没有一种有效的方法来测试JNI /:随意提出方法!
grazie all
答案 0 :(得分:1)
如果我理解你的问题,这应该适合你。您似乎对int
/ jint
转化感到不安,但您不必因为jint
只是int
的typedef。
JNIEXPORT jintArray JNICALL Java_MarsRoverGUI_getData
(JNIEnv *, jobject, jint)
{
jintArray out_ints;
out_ints = (*env)->NewIntArray(env, 91);
(*env)->SetIntArrayRegion(env, out_ints, 0, 91, data_ints);
// returns data_ints as a jintArray
return out_ints;
}
如果有什么不清楚,或者我误解了你的问题,请告诉我!