【发布时间】:2011-05-01 04:25:41
【问题描述】:
我有一个 NDK 库和相应的 Java 类的工作实现。但我无法向该类添加重载方法。目前我的课程包含:
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
我的 jniwrappers.cpp 文件有以下声明:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
到目前为止,一切正常。但接下来我修改我的课程:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
并在 jniwrappers.cpp 中添加另一个声明:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
它编译良好,Android 应用程序启动,没有得到 UnsatisfiedLinkError 但是当它使用参数调用第二个方法时,第一个 C++ 函数被调用,但不是第二个。我在该类中有其他带有参数的方法,但它们都没有被重载,因此它们各自的 JNI 签名不包含参数。
那么,我做错了什么?
【问题讨论】:
标签: java-native-interface android-ndk