2016-10-07 1 views
1

Je suis en train d'écrire un projet android natif qui génère un fichier exécutable (compilé à la fois avec ndk r10e et ndk r12b), et quand j'essaie d'exécuter l'exécutable généré, il génère une erreur qu'il n'est pas en mesure de l'ouvrir:dlopen échoué: bibliothèque "libtest.so" introuvable

dlopen failed: library "libtest.so" not found 

il est évident que "/my/system/path/libtest.so" existe et a les permissions (666 par exemple).

Cela ne s'applique que sur l'un de mes appareils. Je l'ai testé dans plus de 10 appareils et il semble fonctionner parfaitement.

Je n'arrive pas à trouver pourquoi cette erreur arrive.

S'il vous plaît aidez-moi.

+0

Je suppose que libtest.so se trouve dans le répertoire/system/lib, n'est-ce pas? Pourriez-vous nous en dire plus sur vos appareils? AFAIK Android 6.0 n'autorise pas l'utilisation de bibliothèques système non standard dans les applications. – jereksel

+0

Désolé,/my/system/path/n'est pas/system/lib mais un chemin générique tel que/data/local/temp ou un autre. L'appareil est sous Android 5.1.1. – mrpep

+0

Appellez-vous 'dlopen' avec le chemin absolu de la bibliothèque, ou simplement le nom et attendez-vous à trouver des éléments dans le répertoire local? –

Répondre

0

Probablement le moyen le plus simple de déterminer exactement ce qui se passe est d'utiliser strace. Cela vous montrera où il essaie de chercher votre libtest.so et pourquoi il ne le trouve pas. Voir this answer pour savoir comment utiliser strace sur android.