JNI_OnLoad pas trouvé
J'ai commencé le développement d'applications android et suivi ce tutoriel:
http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
mais l'application ne fonctionne pas.
Je le débogage et le journal de chat afficher ce message:
JNI_Onload pas trouvé..comment puis-je résoudre ce problème?
Grâce
OriginalL'auteur NMMA | 2011-02-07
Vous devez vous connecter pour publier un commentaire.
Le but principal de la JNI_OnLoad la fonction est d'enregistrer toutes les méthodes.
Cela est recommandé, mais non la seule, de l'approche. Ainsi fournir un JNI_OnLoad fonction est facultative. Parce qu'il est utilisé pour enregistrer toutes les méthodes, il est possible de découvrir une signature d'incompatibilité entre une java native de déclaration de méthode et de ses C/C++ homologue avant la méthode est réellement utilisée.
Vous pourriez au lieu de cela il suffit de charger une bibliothèque native à partir d'une classe statique de l'initialiseur comme ça:
De cette façon, vous n'aurez pas à fournir un JNI_OnLoad fonction, ainsi que toutes les méthodes dans "mylib" serait découvert automatiquement. Le seul inconvénient est que vous ne savez pas si certains de vos les signatures de méthode native est mauvais, jusqu'à ce que vous avez réellement l'appeler. Dans ce cas, vous obtenez une "unsatisfiedlinkerror' vous dit qu'aucune mise en œuvre a été trouvé pour le natif de la méthode que vous essayez d'appeler.
Si vous allez pour cette option (Option 2 - détection automatique), le niveau de débogage message sera juste un avertissement vous indiquant que vous avez "oublié" afin de fournir un JNI_OnLoad fonction, de sorte vous pouvez simplement ignorer.
Pour plus d'informations il suffit de regarder la JNI Conseils:
http://developer.android.com/guide/practices/jni.html
OriginalL'auteur Ivo
JNI_OnLoad est un niveau de débogage message qui vient vous permet de savoir que la fonction n'a pas été trouvé.
Il est là parce que les gens de temps en temps écrire JNI_OnLoad sans le " extern "C" formulaire de déclaration et puis n'êtes pas sûr de savoir pourquoi les choses ne fonctionnent pas.
Le problème auquel vous faites face est probablement sans rapport avec le message. Regardez la proximité de logcat de sortie pour trouver des indices. dlopen() échecs et de Java exceptions sont vraisemblablement pertinents.
Vous devez coller dans une question, et peut-être décrire l'échec dans plus de détails ("ne marche pas" est un peu vague).
OriginalL'auteur fadden