J'ai compilé mes sources c avec android-ndk puis j'ai mis le fichier .so dans le dossier libs de mon projet android mais quand j'appelle la fonction native j'ai une erreur "No implementation found for native" . Si j'essaie d'appeler cette fonction à partir de shell adb tout fonctionne bien donc je ne comprends pas pourquoi cette erreur. Veuillez aider, AndreaAucune implémentation trouvée pour natif
Répondre
Il existe un schéma de nommage exact impliqué dans JNI qui n'est pas très évident. Peut-être que l'implémentation de votre fonction ne s'y conforme pas? Par exemple, si vous voulez pouvoir appeler une fonction native appelée startServer à partir de votre code JAVA, en supposant que votre paquet s'appelle com.example.something et que votre classe s'appelle MyClass, vous devriez avoir une fonction membre dans votre classe JAVA comme ceci:
private native void startServer();
Et puis votre implémentation de JNI devrait ressembler à ceci:
JNIEXPORT void Java_com_example_something_MyClass_startServer(JNIEnv *env, jobject obj) {
// Do something here...
}
Sinon, il y a une erreur de liaison.
Une autre raison, vous pouvez obtenir cela, est si vous n'êtes pas d'appeler votre bibliothèque au moment où vous faites un appel de fonction JNI:
static {
System.loadLibrary("myJNIFILE");
}
devrait être appelé quelque part avant la référence réelle à une fonction JNI.
Vous avez totalement raison! J'ai eu une application qui fonctionne correctement, mais j'ai ajouté des écrans initiaux supplémentaires (vues) et les plantages de l'application (j'ai reçu un avertissement JNI se plaignant de l'impossibilité de trouver une méthode "native"). Enfin, j'ai déplacé l'appel: \t static { \t \t System.loadLibrary ("mylibrary"); \t} dans l'activité responsable du lancement de l'application. – Genar
- 1. Aucune implémentation trouvée pour le point natif
- 2. android ndk jni Aucune implémentation trouvée erreur
- 3. Aucune mise en œuvre trouvée pour natif, java.lang.UnsatisfiedLinkError
- 4. Aucune implémentation IConnectionFactory trouvée pour la connexion URI: activemq: tcp:
- 5. Aucune implémentation trouvée pour Native Lcom/slytechs/library/NativeLibrary
- 6. Rails 3.1 - ActionView :: Template :: Error (Aucune extension trouvée pour: application): - Aucune extension trouvée pour: l'application
- 7. Erreur "Aucune cellule trouvée"
- 8. Theme.AppCompat.Light.DarkActionBar - Aucune ressource trouvée
- 9. Aucune kinect prête trouvée?
- 10. java.sql.SQLException: Aucune donnée trouvée
- 11. Aucune ligne trouvée d'exception
- 12. java.util.NoSuchElementException: Aucune ligne trouvée
- 13. "Aucune activité trouvée" Erreur
- 14. javax.persistence.NoResultException: Aucune entité trouvée pour la requête
- 15. Aucune métadonnée entité trouvée pour la classe
- 16. Aucune vue trouvée pour l'ID 0x7f080000
- 17. preferencefragment aucune vue trouvée pour l'ID android
- 18. aucune ressource trouvée pour @ le style/Widget.Holo.ActionBar.TabView
- 19. aucune méthode appropriée trouvée pour remplacer C#
- 20. aucune vue trouvée pour l'identification 0x7f05003c
- 21. RuntimeError - Aucune entrée trouvée pour le binaire
- 22. Aucune action trouvée pour l'URL spécifiée
- 23. Android: Aucune activité trouvée pour traiter intention
- 24. symfony 2 Aucune route trouvée pour "GET /"
- 25. BeanCreationException: aucune méthode d'usine trouvée
- 26. Monkey indique aucune activité trouvée
- 27. Aucune définition de haricot trouvée?
- 28. Aucune JVM non développée trouvée
- 29. initwithint avertissement, aucune méthode trouvée?
- 30. Scanner Aucune ligne trouvée Exception
mon paquet est: package upmt.os; et la fonction: public static natif String upmtconf (String [] param); dans la classe Module. Dans le code c l'implémentation est JNIEXPORT jstring JNICALL Java_upmt_os_Module_upmtconf (JNIEnv * env, jobject obj, paramètre jobjectArray) –
Publiez la sortie logcat pour appeler votre fonction - elle a le nom exact recherché par le linker. Si vous avez une sorte de faute de frappe c'est un bon moyen de l'attraper. – gby
Je l'ai résolu. c'était seulement une erreur dans le makefile avec un define. merci quand même –