У меня есть рабочая реализация библиотеки 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, но когда он вызывает второй метод с аргументом, вызывается первая функция С++, но не вторая. У меня есть другие методы с аргументами в этом классе, но ни один из них не перегружен, поэтому их соответствующие подписи JNI не содержат аргументов.
Итак, что я делаю неправильно?