Impossible de dlopen (libsomething.so) Impossible de charger la bibliothèque: link_image [1995]: impossible de lier libsomething.so
Je suis en train d'écrire un projet android, qui est Natif de la couche d'aider la java de la couche, et je suis coincé à un endroit où quand j'ai essayer de faire un Système.loadLibrary, c'est jeter de l'erreur qu'il n'est pas en mesure de faire un lien.
Je suis à l'aide de Cibles spécifiques NDK pour construire le natif de la couche, puis à l'aide de ant pour compiler et créer le fichier apk.
Sur l'exécution sur le périphérique, j'obtiens l'erreur suivante.
Incapable de dlopen(libsomething.donc) Ne peut pas charger la bibliothèque: link_image[1995]: failed to lien libsomething.donc
La bibliothèque obtenir regroupés dans le apk, et est décompressé correctement. Si j'essaie de supprimer la bibliothèque manuellement et ensuite l'exécuter, il fait lancers que la bibliothèque n'a pas trouvé. Il est donc capable de trouver la bibliothèque, mais il met cette erreur, et je ne suis pas en mesure de savoir pourquoi cette erreur est à venir.
S'il vous plaît aider moi.
source d'informationauteur Puneet
Vous devez vous connecter pour publier un commentaire.
D'abord trouver l'emplacement de la .donc fichier. et puis peut essayer:
Exemple suivant suppose l'emplacement de la bibliothèque partagée en tant que:
/data/data/ma.package/lib/libmysharedlibrary.donc
J'ai piège dans la question. j'ai enfin obtenu de réponse à partir de cet article:
http://mpigulski.blogspot.com/2010/09/debugging-dlopen-unsatisfiedlinkerror.html
utilisation
Ensuite Trouvé une bibliothèque Partagée dans le mauvais nom.
Parfois (la plupart du temps!) vous bibliothèque nécessite d'autres bibliothèques, comme mentionné par @musefan. et vous pouvez en faire la liste de faire readelf -d libs/armeabi/libmy.. Cependant, il y a un hic ici: depuis Android n'a aucun mécanisme de contrôle de la version de bibliothèque (comme en normal linux vous avez liblzma..1, liblzma..2, etc), la bibliothèque vous avez besoin est là (liblzma.façon), MAIS n'a pas de certains symboles importés par votre bibliothèque. Voici le live exemple: vous utilisez
android::ZipFileRO::getEntryInfo
fonction situé dans libutils.. Toutes les versions de la bibliothèque dispose de cette fonction, cependant le PROTOTYPE de la fonction a été modifiée à la fin de 2010, de sorte que vous app construit pour 4.0.4 NDK ne fonctionnera pas sur FroYo appareils ou GO appareils avec le même symptomatique:
dlopen
ne peut pas charger la bibliothèque. Voici la recette comment faire pour détecter de tels cas: vous avez besoin du contenu de l'os /system/lib dossier sur votre PC. Il peut être de dossiers sous-évaluées à partir de votre appareil si vous êtes 3rd party Application développé ou intégré si vous êtes développeur de plateforme. puis lancer la commandearm-linux-gnueabi-ld -rpath-link /path/to/system/lib ./lib_mylib.so
et vous allez voir quelque chose de mensonge en cas d'erreur
lib_mylib.so: undefined reference to
android::ZipFileRO::getEntryInfo(void*, int*, un*, un*, un*, un*, un*) const"Vous pouvez également trouver cette erreur lors de l'utilisation d'appeler Système.load(String pathName) méthode et juste en passant libraryName au lieu de chemin d'accès complet à la bibliothèque.
Résolution : utilisez Système.loadLibrary(String libName) méthode et passer la libraryName.