У меня есть рабочая реализация библиотеки 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 не содержат аргументов.
Итак, что я делаю не так?