Java 类中存在类时的JNI函数名

Java 类中存在类时的JNI函数名,java,java-native-interface,Java,Java Native Interface,MethodNameJNI函数可能如下所示: JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj) { //... } 在我的代码中,Java端是: public class ClassName { private class ClassName2 { MethodName(); } } 我不知道,如何编写本机函数的名称;任何组合都会导致链接错误:

MethodNameJNI函数可能如下所示:

JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj)
{
     //...
}
在我的代码中,Java端是:

public class ClassName
{
    private class ClassName2
    {
        MethodName();
    }
}
我不知道,如何编写本机函数的名称;任何组合都会导致链接错误:

JNIEXPORT void JNICALL Java_ClassName_ClassName2_MethodName(JNIEnv *env, jobject obj);

JNIEXPORT void JNICALL Java_ClassName2_MethodName(JNIEnv *env, jobject obj);

JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj);

使用javah,函数名似乎获得了标准的OuterClass$InnerClass,其中$expanded为其unicode数字:

JNIEXPORT void JNICALL Java_ClassName_00024ClassName2_MethodName(JNIEnv *, jobject);

难看,但这应该行得通。

使用javah,函数名似乎获得了标准的OuterClass$InnerClass,其中$expanded为unicode数字:

JNIEXPORT void JNICALL Java_ClassName_00024ClassName2_MethodName(JNIEnv *, jobject);

难看,但这应该可以用。

只要使用javah工具就可以了。这个
MethodName()
在哪里?在内部类中如何准确地称呼它呢?在纯C中经过很长时间后,在objective中的第一步…:)。。。这是一个坏主意,我只知道答案:C模块中的r:JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv*env,jobject obj);在Java中,在ClassName2 ClassName.this.MethodName()内;答案是正确的,为什么不接受它呢?只需使用javah工具就可以了。这个
MethodName()
在哪里?在内部类中如何准确地称呼它呢?在纯C中经过很长时间后,在objective中的第一步…:)。。。这是一个坏主意,我只知道答案:C模块中的r:JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv*env,jobject obj);在Java中,在ClassName2 ClassName.this.MethodName()内;答案是正确的,为什么不接受呢?我的英雄也是,很好。我的英雄也是,很好。