如果类存在于类中,则为JNI函数名

the*_*ker 0 java java-native-interface

MethodNameJNI函数可能如下所示:

JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj)
{
     //...
}
Run Code Online (Sandbox Code Playgroud)

我在Java方面的代码是:

public class ClassName
{
    private class ClassName2
    {
        MethodName();
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道,如何写本机函数的名称; 任何组合去链接错误:

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);
Run Code Online (Sandbox Code Playgroud)

ben*_*nkc 5

使用javah,看起来函数名称获得标准的OuterClass $ InnerClass,其中$扩展为其unicode数字:

JNIEXPORT void JNICALL Java_ClassName_00024ClassName2_MethodName(JNIEnv *, jobject);
Run Code Online (Sandbox Code Playgroud)

丑陋,但这应该工作.