gpt4 book ai didi

java - JNI_OnLoad错误: Unable to find decl for native function with signature ()Ljava/lang/String

转载 作者:行者123 更新时间:2023-12-02 08:16:02 27 4
gpt4 key购买 nike

我目前正在使用 SWIG/jni 从 Android 应用程序的 java 调用 C++ 函数。但是,每当函数返回 jstring 时我都会遇到困难。应用程序启动时,我在 LogCat 中收到以下错误...

错误:无法找到 native Lcom/example/swigJNI 的 decl;.plugin_name:L()java/lang/String

错误:无法找到 native Lcom/example/swigJNI 的 decl;.plugin_description:L()java/lang/String

这里是一些可能有助于检查的代码...

SWIG 生成的包装器代码:

 SWIGEXPORT jstring JNICALL Java_swigJNI_1plugin_1name(JNIEnv *jenv, jclass jcls) {
jstring jresult = 0 ;
char *result = 0 ;

(void)jenv;
(void)jcls;
result = (char *)plugin_name();
if (result) jresult = jenv->NewStringUTF((const char *)result);
return jresult;
}


SWIGEXPORT jstring JNICALL Java_swigJNI_1plugin_1description(JNIEnv *jenv, jclass jcls) {
jstring jresult = 0 ;
char *result = 0 ;

(void)jenv;
(void)jcls;
result = (char *)plugin_description();
if (result) jresult = jenv->NewStringUTF((const char *)result);
return jresult;
}

JNI Native 方法的声明:

static const JNINativeMethod methods[] = {
{"plugin_name", "()Ljava/lang/String", (void*) Java_swigJNI_1plugin_1name},
{"plugin_description", "()Ljava/lang/String", (void*) Java_swigJNI_1plugin_1description}
};

当函数返回 int 时,我已经成功执行 JNI_onLoad() 和 RegisterNatives(),但是字符串对我来说是相当有问题的。我不太明白为什么找不到这些功能。我有什么遗漏的吗?

最佳答案

啊啊,我感觉自己像个傻瓜!

我用于字符串的签名是...

()Ljava/lang/String

当它真的应该......

()Ljava/lang/String;

忘记分号了。确认!

关于java - JNI_OnLoad错误: Unable to find decl for native function with signature ()Ljava/lang/String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6428987/

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