gpt4 book ai didi

Java Native Interface 回调 jstrings as a jobjectArray jmethodID 的签名错误

转载 作者:太空宇宙 更新时间:2023-11-04 04:34:56 25 4
gpt4 key购买 nike

如果我尝试从 JNI 将 jstrings 传递给 jobjectArray 中的 Java,我就会出错。我对此进行了多次研究,它应该有效。但是我的签名 [Ljava/lang/String 不起作用。当我什么都不通过时,它就起作用了。当我返回 jobjectArray 时,它也有效。当我尝试将数组发送到 Java 方法时发生错误。所以我认为 Sinature 不起作用。我希望有人可以帮助我,这样对其他人来说也会更容易。我会发送我的小程序来证明我的错误。

这是 C 代码:

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include "clas.h"

JNIEXPORT void JNICALL Java_clas_function(JNIEnv *env, jobject jobj, jobjectArray in_array){
jclass icls = (*env)->GetObjectClass(env, jobj);
jmethodID jmid = (*env)->GetMethodID(env, icls, "callback", "([Ljava/lang/String)V");
if(jmid == 0){
printf("False Signature\n");
exit(-1);
}
(*env)->CallVoidMethod(env, jobj, jmid, in_array);
}

Java 代码:

public class clas {

public clas(){
String[] c = {"something", "something else", "another one"};
function(c);
}

public native void function(String[] in_strg);

public static void main(String[] args){
clas c = new clas();
}
private void callback(String[] in_string){
System.out.println("reached");
}

static {
System.loadLibrary("clas");
}

}

谢谢 ;).

最佳答案

String对象的签名是Ljava/lang/String;,不是Ljava/lang/String

关于Java Native Interface 回调 jstrings as a jobjectArray jmethodID 的签名错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com