我的问题是JNI如何获取本机方法的返回值并将其提供给JVM(推入本机堆栈)。
例如,如果我有一个本机方法toString
,并且JVM知道toString方法的代码在哪里,JNI如何调用该方法?
答案 0 :(得分:0)
Java没有从本机方法接收C样式的字符数组。被调用者构建Java对象(例如,String)并通过引用将其传递给调用者。使用原语类型,例如 int ,结果按值传递,但实现细节是JVM专用的。
答案 1 :(得分:0)
Java仅支持原语和引用。传递或返回没有String对象类型,只有每个引用到String。从C的角度来看,此引用为void *
,并且对象中的数据不会发生转换。
我想知道这个虚拟机是如何工作的,而不是如何将字符数组转换为java字符串
Convert char* to jstring in JNI, when char* is passed using va_arg