-1

我有这个java方法:

public static native void processBuffer(ByteBuffer bb);

用javah

JNIEXPORT void JNICALL Java_com_lan_factorial_IssmJni_processBuffer
  (JNIEnv *env, jclass klass , jobject buf)

完美工作

使用 Jni 加载

static JNINativeMethod method_table[] = {
        {"fac"      ,     "(J)J" , (void *) factorial},
        {"getBuffer",     "()[D" , (void *) getBufferNative},
        //{"processBuffer", "(Ljava/nio/ByteBuffer)V", (void *) fillBuffer}};

此表中的其他方法有效,除了对应于上面从 javah 生成的方法的最后一个方法。当然,如果我执行 JNI onload,我将有一个方法调用 fillBuffer。

有人可以解释为什么 javah 有效但 jni_onload 无效。我做错什么了吗?我有其他使用 jni_onload 的方法,所以我想远离 javah。

谢谢

4

1 回答 1

1

方法签名中缺少分号。它根本不“对应”。不要猜测本机方法签名:使用 javap -s 的输出。剪切和粘贴。

于 2012-11-14T22:13:00.767 回答