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.

ViniciusPV
la source
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 '\'.

raurora
la source
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.

Casper
la source
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.

Abuzar Amin
la source
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!

hasan
la source
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

Ted
la source
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 .

ehacinom
la source
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

Teena nath Paul
la source
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

Hitesh Agarwal
la source
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.

kkodev
la source
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
reetu
la source
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

Accid Bright
la source
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

Ashvin Ajadiya
la source
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.

Fahad Qasim
la source
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)

Reza Dehnavi
la source
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.

Trevor Panhorst
la source
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.

A. Trejo
la source
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.

Aymeric Bouzy aybbyk
la source
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.

Justin Domnitz
la source
1

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

Chandni
la source
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."

Juan Santos
la source
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.

Manoj Shrestha
la source
1
  1. Dossier de construction nettoyé
  2. XCode redémarré

Parti...

batthis
la source
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)

yoAlex5
la source
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
dnscode
la source