J'ai une implémentation fonctionnelle de la bibliothèque NDK et de la classe Java correspondante. Mais je ne suis pas capable d'ajouter une méthode surchargée à cette classe. À l'heure actuelle ma classe contient:Quelle est la manière correcte d'écrire des signatures de méthode native dans Android NDK?
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
Mon fichier jniwrappers.cpp a la déclaration suivante:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
Jusqu'à ce point, tout fonctionne bien. Mais à côté je modifie ma classe:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
Et ajouter à jniwrappers.cpp une autre déclaration:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
Il compile bien, l'application Android commence, ne reçoit pas UnsatisfiedLinkError mais quand il appelle la deuxième méthode avec l'argument la première fonction C++ est appelée mais pas la seconde. J'ai d'autres méthodes avec des arguments dans cette classe mais aucune d'entre elles n'est surchargée de sorte que leurs signatures JNI respectives ne contiennent pas d'arguments.
Alors, qu'est-ce que je fais de mal?
C'était la première chose que j'ai essayée mais quelque chose s'est mal passé et j'ai UnsatisfiedLinkError. Maintenant j'ai réessayé ceci et ai tout fonctionné. Merci beaucoup! –