因此,如果您想从 Java 调用 C,我了解生成 C 标头的通常过程,但是如果我没有要提供的“jobject”,我不明白应该使用什么函数调用。就像这里,我试图打电话doSomething()
public class Test {
public void doSomething(ByteBuffer buf) {
System.out.println("Hi");
};
}
我读了这个,但我不明白: http ://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp16656
jobject buf = env->NewDirectByteBuffer(b, len);
jclass testClass;
jmethodID doSomethingMethod;
testClass = env->FindClass("test/Test");
doSomethingMethod = env->GetMethodID(testClass, "doSomething", "(Ljava/nio/ByteBuffer;)V");
env->CallVoidMethod(buf, doSomethingMethod);
“CallVoidMethod()”的第一个参数应该是什么?它总是工作,但什么?当我运行它时,它只是在 Eclipse 中告诉我“UnsupportedOperationException”,它不打印任何东西。