1
我可以用它返回一個指向一個本地方法?
我使用的語法如下: public native int* intArrayMethod(float[] t,int nb_of_subscribers,int tags);
但它表示錯誤。JNI返回類型
我可以用它返回一個指向一個本地方法?
我使用的語法如下: public native int* intArrayMethod(float[] t,int nb_of_subscribers,int tags);
但它表示錯誤。JNI返回類型
您的不應該在Java中使用原生指針,因爲C++和Java之間的數據結構不同。和Java的垃圾收集器。
你的Java類應該是這樣的:
public class IntArrayViaJNI {
private static boolean loaded = false;
private native int[] intArrayMethod(float[] t, int nb_of_subscribers, int tags);
public int[] getIntArray(float[] t, int nb_of_subscribers, int tags) {
// Although this portion should be in a synchronized method,
// e.g. ensureLibraryLoaded().
if (!loaded) {
System.loadLibrary("mylib");
loaded = true;
}
return intArrayMethod(t, nb_of_subscribers, tags);
}
}
而且你的C++代碼應該是這樣的:
JNIEXPORT jintArray JNICALL Java_IntArrayViaJNI_intArrayMethod(
JNIEnv *env, jclass cls,
/* generated by JAVAH: float[] t, int nb_of_subscribers, int tags */)
{
jintArray result = (*env)->NewIntArray(env, size);
if (result == NULL) {
return NULL; /* out of memory error thrown */
}
int i, size = MY_ARRAY_SIZE;
// Populate a temp array with primitives.
jint fill[256];
for (i = 0; i < size; i++) {
fill[i] = MY_ARRAY_VALUE;
}
// Let the JVM copy it to the Java structure.
(*env)->SetIntArrayRegion(env, result, 0, size, fill);
return result;
}
會的Java做什麼用返回的指針? – 2012-04-03 17:33:12
事實上,我需要的陣列,但我不能返回一個指針array.The用於插入MySQL查詢。 – holy 2012-04-03 17:34:15
谷歌 'jintarray' – 2012-04-03 17:36:04