Errore "libreria non trovata per" dopo aver inserito l'applicazione in AdMob


150

Ricevo un errore dopo aver inserito la mia domanda in un AdMob. L'app funzionava fino ad oggi. L'errore è il seguente:

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

Come posso risolvere questo problema? Grazie.




A volte: scollegare il dispositivo e creare prima il progetto. Genera librerie e quindi sarai in grado di eseguire nel dispositivo.
TheTiger

Risposte:


114

A volte è sufficiente rimuovere il riferimento della libreria e aggiungere nuovamente il riferimento.

Oltre ad aggiungere nuovamente l'SDK per gli annunci per dispositivi mobili di Google e altre librerie da zero, ti consiglio di controllare i percorsi di ricerca delle biblioteche . Ci sono casi in cui si copia o duplica un target, Xcode decide che deve sfuggire alle doppie virgolette "con un '\'. Assicurati di rimuovere tutti \ 's - dovrebbe apparire così -

inserisci qui la descrizione dell'immagine

Sono stato in grado di duplicare l'errore, facendo prefisso il mio percorso con più '\'.


buono, dopo l'installazione del pod, una delle librerie non era elencata lì. Non so perché, ma l'aggiunta di quel percorso di libreria lo fa funzionare.
Warewolf,

Bene, questo ha risolto il mio problema "Libreria non trovata per -lART" ed è davvero incredibile! Grazie !
ZedTuX,

Considera anche "Percorsi di ricerca dell'intestazione".
Luat Vu Dinh,

@raurora Come si accede ai percorsi di ricerca della biblioteca?
Massimo Frittelli,

1
Progetto @MassimoFrittelli> Schede Impostazioni di costruzione> Percorsi di ricerca. Puoi anche digitare l'opzione di ricerca.
Raurora,

315

Ho avuto un problema "libreria non trovata" simile. Tuttavia è stato perché accidentalmente stavo usando il .xcodeprojfile anziché il .xcworkspacefile.


4
Qualcuno può spiegare lo scopo di .xcodeproj e .xcworkspace?
EFreak

11
Cose come questa mi fanno amare l'ecosistema Javascript
Mark

Come posso cambiarlo ...?
Brayan Loayza,

8
xcworkspace è quando usi Cocoapods. Non è un problema Xcode, ma gli utenti.
Azam,

1
.xcworkspace è quando hai più di 1 "progetto" all'interno della tua soluzione. Ad esempio puoi avere librerie esterne (cocoapods) o la tua libreria che usi in molti progetti.
Daniel Benedykt,

86

Seleziona il tuo target, andare "Build Phases"a "Link Binary With Libraries"rimuovere ".a"il file di quella libreria. Pulisci e costruisci.


3
Sì, abbastanza strano che Xcode non lo segni mancante colorandolo di rosso
brainray

Veramente bello!! il mio problema era quando ho aggiunto il framework utente al vecchio progetto. Rimuovi coreplot.a e funziona bene !!!!
Jose Pose S

66

Se l'errore si riferisce a Cocoapods come segue:

library not found for -lPod-...

Devi controllare le altre bandiere dei linker e rimuoverle da lì.

Informazioni aggiuntive: se hai un vecchio progetto che utilizza cocoapods. E di recente hai dovuto aggiungere use_frameworks! al tuo podfile. cocoapods non aggiungerà più le librerie alle tue altre bandiere Linker perché ne sarà ereditato. Pertanto, potrebbe essere necessario rimuovere quelli manualmente dagli altri flag linker che sono stati aggiunti prima di utilizzare use_frameworks!


1
Ho molte bandiere qui, dovrei rimuovere tutto o solo quello per il Pod?
Mayur Deshmukh,

Se quelle bandiere causano un problema. dovresti rimuoverli o tenerli e aggiungere la libreria se vuoi ancora usarlo.
Hasan,

1
Immagino che ciò accada quando provi a rimuovere manualmente la libreria che viene aggiunta dai baccelli di cacao. Il modo corretto è rimuovere la libreria dal tuo podfile. quindi esegui di nuovo l'installazione pod
hasan

1
Grazie!! Questo è stato un indizio per me :). Nel mio caso, l'obiettivo duplicato ha diviso ogni "framework" in due righe "-l" e "framework" !!
Eva Madrazo,

1
@IanSteffy basta combinarlo
Eva Madrazo,

57

Per il mio caso Xcode 7 , ha funzionato anche in Xcode 9.1

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

impostato Build Active architecture OnlysuYes

inserisci qui la descrizione dell'immagine


2
Che dire di quando abbiamo bisogno di creare una build di produzione per App Store? Voglio dire, dovrebbe essere NO per Production Build.
Jabbar,

d'accordo che dovrebbe essere NO per la produzione
Ted

2
Questo NON avrà alcun effetto sull'installazione Build di produzione?
Jabbar,

1
Ha funzionato per me integrando l'SDK di Pinterest su XCode 9.2 e iOS 11.
Aakash Aggarwal il

21

Questo succede se stai usando cocoapods, usa il .xcworkspacefile invece del .xcodeprojfile predefinito .


15

Se l'errore è come il seguente

ld: libreria non trovata per -lpods

Ho scoperto che un file "libPods.a" che è di colore rosso (come i file mancanti) è stato creato in qualche modo nel gruppo Framework del progetto. Ho semplicemente rimosso quel file e tutto è andato bene.

EDIT: un'altra soluzione

Un'altra soluzione a cui ho già risposto alla domanda simile è in questo link


12

goto Build Phases -> Collega binario con librerie e rimuovi libreria che mostra errori perché quella libreria non è disponibile nella cartella del progetto


Ciò ha risolto il mio problema particolare. Avevo due librerie con nomi simili, una con nome libPods-Foo BarTests.ae un'altra con nome libPods-FooBarTests.a.
edenwaith,

9

Questo può accadere anche se si apre un file di progetto anziché un'area di lavoro. Ho perso me stesso un giorno in questo modo.


1
eccellente, ho anche fatto l'aggiornamento del pod mentre chiudevo l'area di lavoro, quindi l'ho aperto dopo l'aggiornamento del pod
Badr

5

In ritardo per la risposta, ma ecco l'elenco delle cose che ho provato, quindi sarà in un posto se qualcuno vuole provare a risolvere il problema.

  1. Architettura valida = armv7 armv7s
  2. Crea solo architettura attiva = NO
  3. Target -> Impostazioni build -> Altre flag linker = $ (ereditato)
  4. Target -> Impostazioni build -> Percorso di ricerca libreria = $ (ereditato)
  5. Prodotto pulito
  6. Aggiornamento pod nel terminale

2

Nel mio caso c'era un problema di denominazione. La mia libreria fu chiamata ios-admob-mm-adapter.a, ma Xcode prevedeva che il nome dovesse iniziare con il prefisso lib . Ho appena rinominato la mia lib libios-admob-mm-adapter.ae risolto il problema.

Uso Cocoapods e collega le librerie con l' opzione Flag di altri linker nelle impostazioni di creazione del mio target. Sembra la bandiera-l"ios-admob-mm-adapter"

Spero che aiuti qualcun altro


2

Semplicemente, GoogleAdMobAds.amanca nel target del progetto. Per me è stato libAdIdAccessLibrary.aSi prega di controllare lo screenshot allegato

inserisci qui la descrizione dell'immagine


2

Quanto a me questo problema si verifica perché ho installato Material Library per IOS. per risolvere questo problema

1: vai su Crea impostazioni dell'app di destinazione.

2: Cerca altri flag linker

3: Apri gli altri flag del linker e controlla la libreria menzionata nell'errore.

4: rimuovi quella bandiera.

5: pulire e costruire.

Spero che questo risolva il tuo problema.


2

Nel caso si ld: library not found for -{LIBRARY_NAME}verificasse perché i file della libreria non sono esistenti.

Controlla il percorso della libreria nella scheda Percorsi di ricerca libreria "Crea fasi" delle destinazioni dell'applicazione.

Il percorso dei file della libreria deve essere in base al percorso reale, ad esempio se i file nella radice del progetto è necessario impostare il percorso come $(PROJECT_DIR)


1

So che è un po 'vecchio, ma ho appena riscontrato un problema simile e l'esecuzione di "aggiornamento pod" ha risolto questo problema per me. Il mio errore di libreria era con AFNetworking ...

Fai solo attenzione a fare l'aggiornamento del pod se non usi versioni esplicite nel tuo file pod.


1

Questo errore è molto strano.

Ho avuto questo errore con -ldAfnetworking e copio il mio progetto solo in altri percorsi e opere.


1

Ho provato a cambiare titolo la mia configurazione di generazione Releasedi Production, ma a quanto pare baccelli di cacao non piace esso. L'ho rinominato di nuovo in Release, e tutto va bene.


potresti anche aver rinominato la destinazione nel podfile.
Romain TAILLANDIER,

1

La risposta di @ raurora mi ha indicato la giusta direzione. Stavo includendo le librerie nel mio percorso "watchkitapp Extension / lib". In questo caso, il percorso di ricerca della libreria doveva essere sfuggito con un '\', ma il linker non sembrava capirlo. Per risolvere il problema, ho spostato il mio percorso lib su di un livello, quindi non era più in una directory che conteneva uno spazio nel nome.


1

Ho appena aggiornato il file pod "aggiornamento pod" e inizia a funzionare normalmente per me.


1

L'esecuzione di "aggiornamento pod" nel mio progetto ha risolto il mio problema con l'errore "libreria non trovata per -lSTPopup".

Osservando la risposta di Trevor Panhorst:

"Fai solo attenzione a fare l'aggiornamento del pod se non usi versioni esplicite nel tuo file pod."


1

Soluzione semplice. Ecco come risolverei il problema:

  1. Vai alla directory platforms/ios
  2. Quindi, esegui il comando pod install

Questo è tutto. Questo dovrebbe installare la libreria mancante.


1
  1. Cartella build pulita
  2. XCode riavviato

Andato via...


1

È un errore di compilazione per un Static Librarycausato daStatic Linker

ld: library not found for -l<Library_name>
  1. È possibile ottenere l'errore Library not found forquando non è stato incluso un percorso di libreria perLibrary Search Paths

    ldsignifica Static Linkerche non è possibile trovare una posizione della libreria. Come sviluppatore dovresti aiutare il linker e puntare ilLibrary Search Paths

    Build Settings -> Search Paths -> Library Search Paths 
  2. Inoltre puoi ottenere questo errore se apri per la prima volta un nuovo progetto ( .xcodeproj) con supporto Cocoapods, esegui pod update. Per risolverlo basta chiudere questo progetto e aprire invece uno spazio di lavoro creato ( .xcworkspace)


0

Stavo ottenendo bug simili sulla libreria non trovati. Alla fine è così che sono stato in grado di risolverlo

  1. Prima di iniziare con Xcode Archive, ho usato flutter build iOS
  2. Modificato il target di distribuzione IOS con un target superiore iOS 11.2. In precedenza avevo qualcosa come 8.0 che stava dando tutti gli errori di cui sopra.
  3. Assicurati che le destinazioni di distribuzione IOS in Xcode siano le stesse in Progetto, Destinazione e Pod
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.