Erreur "bibliothèque introuvable pour" après avoir placé l'application dans AdMob


150

J'obtiens une erreur après avoir placé ma demande dans un AdMob. L'application fonctionnait jusqu'à aujourd'hui. L'erreur est la suivante:

ld: library not found for -lGoogleAdMobAds
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Comment puis-je réparer cela? Je vous remercie.




Parfois: débranchez votre appareil et créez d'abord le projet. Il générera des bibliothèques et vous pourrez ensuite exécuter dans l'appareil.
TheTiger

Réponses:


114

Parfois, vous supprimez simplement la référence de la bibliothèque et ajoutez à nouveau une référence.

Outre l'ajout du SDK Google Mobile Ads et d'autres bibliothèques à partir de zéro, je vous recommande de vérifier les chemins de recherche des bibliothèques . Il y a des cas où vous copiez ou dupliquez une cible, Xcode décide qu'il doit échapper tous les guillemets doubles "avec un '\'. Assurez-vous de supprimer tous les \ 's - cela devrait ressembler à ceci -

entrez la description de l'image ici

J'ai pu dupliquer l'erreur en préfixant mon chemin avec plusieurs '\'.


bon, après l'installation du pod, l'une des bibliothèques n'y figurait pas. Je ne sais pas pourquoi, mais l'ajout de ce chemin de bibliothèque le fait fonctionner.
Warewolf

Eh bien, cela a résolu mon problème "Bibliothèque introuvable pour -lART" et c'est vraiment incroyable! Je vous remercie !
ZedTuX

Considérez également les "chemins de recherche d'en-tête".
Luat Vu Dinh

@raurora Comment accédez-vous aux chemins de recherche des bibliothèques?
Massimo Frittelli le

1
Projet @MassimoFrittelli> Onglets Paramètres de construction> Chemins de recherche. Vous pouvez également saisir l'option de recherche.
raurora le

316

J'ai eu un problème similaire de «bibliothèque non trouvée». Cependant, c'était parce que j'utilisais accidentellement le .xcodeprojfichier au lieu du .xcworkspacefichier.


4
Quelqu'un peut-il expliquer le but de .xcodeproj et .xcworkspace?
EFreak

11
Des choses comme celle-ci me font aimer l'écosystème Javascript
Mark

Comment puis-je changer cela ..?
Brayan Loayza

8
xcworkspace est lorsque vous utilisez des Cocoapods. Ce n'est pas un problème Xcode, mais les utilisateurs.
Azam

1
.xcworkspace est lorsque vous avez plus d'un "projet" dans votre solution. Par exemple, vous pouvez avoir des bibliothèques externes (cocoapodes) ou votre propre bibliothèque que vous utilisez dans de nombreux projets.
Daniel Benedykt

86

Sélectionnez votre cible, allez à "Build Phases"en "Link Binary With Libraries"supprimer le ".a"fichier de cette bibliothèque. Nettoyez et construisez.


3
Ouais, assez étrange pour que Xcode ne le marque pas manquant en le colorant en rouge
brainray

Vraiment sympa!! mon problème était lorsque j'ai ajouté un cadre utilisateur à l'ancien projet. Supprimer coreplot.a et fonctionne très bien !!!!
Jose Pose S

66

Si une erreur liée aux Cocoapods comme suit:

library not found for -lPod-...

Vous devez vérifier les autres indicateurs de l'éditeur de liens et les supprimer de là.

Informations supplémentaires: Si vous avez un ancien projet qui utilise des cocoapodes. Et récemment, vous avez dû ajouter le use_frameworks! à votre fichier pod. cocoapods n'ajoutera plus les bibliothèques à vos autres indicateurs de liens car il est hérité. Par conséquent, vous devrez peut-être les supprimer manuellement des autres indicateurs de l'éditeur de liens auxquels ils ont été ajoutés avant d'utiliser use_frameworks!


1
J'ai de nombreux indicateurs ici, dois-je supprimer tout ou juste celui du Pod?
Mayur Deshmukh

Si ces indicateurs posent un problème. vous devez les supprimer ou les conserver et ajouter la bibliothèque si vous souhaitez toujours l'utiliser.
hasan

1
Je suppose que cela se produit lorsque vous essayez de supprimer manuellement la bibliothèque ajoutée par les cabosses de cacao. La méthode correcte consiste à supprimer la bibliothèque de votre fichier pod. puis vous exécutez à nouveau l'installation du pod
hasan

1
Merci!! C'était un indice pour moi :). Dans mon cas, la cible dupliquée a divisé chaque -l "framework" en deux lignes "-l" et "framework" !!
Eva Madrazo

1
@IanSteffy vient de le combiner
Eva Madrazo

57

Pour mon cas Xcode 7 , a également travaillé dans Xcode 9.1

ld: library not found for -ldAfnetworking
clang: error: linker command failed with exit code 1 (use -v to see invocation)

réglé Build Active architecture OnlysurYes

entrez la description de l'image ici


2
Qu'en est-il lorsque nous devons créer une version de production pour l'App Store? Je veux dire que ce devrait être NON pour Production Build.
Jabbar

d'accord, il devrait être NON pour la production
Ted

2
Cela n'aura-t-il aucun effet sur l'installation de la version de production?
Jabbar

1
A travaillé pour moi lors de l'intégration du SDK Pinterest sur XCode 9.2 et iOS 11.
Aakash Aggarwal

21

Cela se produit si vous utilisez des cocoapodes, utilisez le .xcworkspacefichier au lieu du .xcodeprojfichier par défaut .


15

Si l'erreur est comme suit

ld: bibliothèque introuvable pour -lpods

J'ai trouvé qu'un fichier "libPods.a" qui est de couleur rouge (comme les fichiers manquants) a été créé d'une manière ou d'une autre dans le groupe Framework du projet. J'ai simplement supprimé ce fichier et tout s'est bien passé.

EDIT: une autre solution

Une autre solution à laquelle j'ai déjà répondu dans la question similaire est dans ce lien


12

goto Build Phases -> Lier le binaire avec les bibliothèques et supprimer la bibliothèque qui affiche des erreurs car cette bibliothèque n'est pas disponible dans le dossier du projet


Cela a résolu mon problème particulier. J'avais deux bibliothèques nommées similaires, une nommée libPods-Foo BarTests.aet une autre nommée libPods-FooBarTests.a.
edenwaith

9

Cela peut également se produire si vous ouvrez un fichier de projet au lieu d'un espace de travail. J'ai perdu moi-même une journée de cette façon.


1
excellent, j'ai également fait une mise à jour du pod en fermant l'espace de travail, puis je l'ai ouvert une fois la mise à jour du pod terminée
Badr

5

En retard pour la réponse, mais voici la liste des choses que j'ai essayées, donc ce sera au même endroit si quelqu'un veut essayer de résoudre le problème.

  1. Architecture valide = armv7 armv7s
  2. Construire une architecture active uniquement = NON
  3. Target -> Build Settings -> Other Linker Flags = $ (hérité)
  4. Cible -> Paramètres de construction -> Chemin de recherche de la bibliothèque = $ (hérité)
  5. Produit propre
  6. Mise à jour du pod dans le terminal

2

Dans mon cas, il y avait un problème de dénomination. Ma bibliothèque a été appelée ios-admob-mm-adapter.a, mais Xcode s'attendait à ce que le nom commence par le préfixe lib . Je viens de renommer ma bibliothèque enlibios-admob-mm-adapter.a et de résoudre le problème.

J'utilise Cocoapods, et il lie les bibliothèques avec l' option Autres indicateurs de l'éditeur de liens dans les paramètres de construction de ma cible. Le drapeau ressemble à-l"ios-admob-mm-adapter"

J'espère que ça aide quelqu'un d'autre


2

Simplement, il GoogleAdMobAds.amanque dans la cible du projet. Pour moi, c'était libAdIdAccessLibrary.as'il vous plaît vérifier la capture d'écran ci-jointe

entrez la description de l'image ici


2

Quant à moi, ce problème se produit parce que j'ai installé la bibliothèque de matériaux pour IOS. pour résoudre ce problème

1: Accédez aux paramètres de création de votre application cible.

2: Rechercher d' autres indicateurs de l'éditeur de liens

3: Ouvrez les autres indicateurs de l'éditeur de liens et recherchez la bibliothèque mentionnée dans l'erreur.

4: supprimez ce drapeau.

5: Nettoyez et construisez.

J'espère que cela résoudra votre problème.


2

Dans le cas où ld: library not found for -{LIBRARY_NAME}cela s'est produit car le ou les fichiers de bibliothèque n'existent pas.

Vérifiez le chemin de la bibliothèque sur l'onglet Chemins de recherche de la bibliothèque «Phases de construction» de vos cibles d'application.

Le chemin du ou des fichiers de bibliothèque doit être en fonction du chemin réel par exemple si votre ou vos fichiers à la racine du projet vous devez définir le chemin comme $(PROJECT_DIR)


1

Je sais que c'est un peu vieux, mais je viens de rencontrer un problème similaire et l'exécution de 'pod update' a corrigé cela pour moi. Mon erreur de bibliothèque était avec AFNetworking ...

Faites juste attention à faire la mise à jour du pod si vous n'utilisez pas de versions explicites dans votre fichier pod.


1

Cette erreur est très étrange.

J'ai eu cette erreur avec -ldAfnetworking et je ne copie mon projet que dans un autre chemin et fonctionne.


1

J'ai essayé de renommer ma configuration de construction Releaseen Production, mais apparemment, les cabosses de cacao ne l'aiment pas. Je l'ai renommé à nouveau Release, et tout se construit très bien.


vous pourriez également avoir renommé la cible dans le fichier pod.
Romain TAILLANDIER

1

La réponse de @ raurora m'a orienté dans la bonne direction. J'incluais des bibliothèques dans mon chemin "watchkitapp Extension / lib". Dans ce cas, le chemin de recherche de la bibliothèque devait être échappé avec un '\', mais l'éditeur de liens ne semblait pas le comprendre. Pour résoudre / contourner le problème, j'ai déplacé mon chemin de bibliothèque d'un niveau vers le haut afin qu'il ne soit plus dans un répertoire contenant un espace dans le nom.


1

Je viens de mettre à jour le fichier pod 'pod update' et cela commence à fonctionner normalement pour moi.


1

L'exécution de 'pod update' dans mon projet a résolu mon problème avec l'erreur 'Library not found for -lSTPopup'.

Remarquant la réponse de Trevor Panhorst:

"Faites juste attention lors de la mise à jour du pod si vous n'utilisez pas de versions explicites dans votre fichier pod."


1

Solution simple. Voici comment résoudre le problème:

  1. Aller au répertoire platforms/ios
  2. Ensuite, exécutez la commande pod install

C'est tout. Cela devrait installer la bibliothèque manquante.


1
  1. Dossier de construction nettoyé
  2. XCode redémarré

Parti...


1

C'est une erreur de compilation pour un Static Libraryqui est causée parStatic Linker

ld: library not found for -l<Library_name>
  1. Vous pouvez obtenir l'erreur Library not found forlorsque vous n'avez pas inclus de chemin de bibliothèque vers leLibrary Search Paths

    ldsignifie Static Linkerqui ne peut pas trouver un emplacement de la bibliothèque. En tant que développeur, vous devez aider l'éditeur de liens et pointer leLibrary Search Paths

    Build Settings -> Search Paths -> Library Search Paths 
  2. Vous pouvez également obtenir cette erreur si vous ouvrez pour la première fois un nouveau projet ( .xcodeproj) avec le support Cocoapods, exécutez pod update. Pour résoudre ce problème, fermez simplement ce projet et ouvrez un espace de travail créé à la place ( .xcworkspace)


0

J'obtenais des bogues similaires sur la bibliothèque non trouvés. En fin de compte, c'est ainsi que j'ai pu le résoudre

  1. Avant de commencer avec Xcode Archive, utilisé Flutter Build iOS
  2. Modification de la cible de déploiement IOS en une cible supérieure iOS 11.2. Auparavant, j'avais quelque chose comme 8.0 qui donnait toutes les erreurs ci-dessus.
  3. Assurez-vous que les cibles de déploiement IOS dans Xcode sont les mêmes dans le projet, la cible et les pods
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.