Ho un'implementazione funzionante della libreria NDK e della corrispondente classe Java. Ma non sono in grado di aggiungere un metodo sovraccarico a quella classe. Attualmente la mia classe contiene:Qual è il modo corretto di scrivere firme dei metodi nativi in NDK Android?
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
Il mio file jniwrappers.cpp ha la seguente dichiarazione:
beneJNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
Fino a questo punto tutto sta funzionando. Ma la prossima modifico la mia classe:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
e aggiungere al jniwrappers.cpp un'altra dichiarazione:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
Si compila bene, avvia l'applicazione Android, non ottiene UnsatisfiedLinkError ma quando si chiama il secondo metodo con l'argomento viene chiamata la prima funzione C++ ma non la seconda. Ho altri metodi con argomenti in quella classe ma nessuno di essi è sovraccarico, quindi le rispettive firme JNI non contengono argomenti.
Quindi, cosa sto sbagliando?
Questa è stata la prima cosa che ho provato ma qualcosa è andato storto e ho UnsatisfiedLinkError. Ora ho ritentato e ho fatto funzionare tutto. Molte grazie! –