Помилка "бібліотеку не знайдено для" після розміщення програми в AdMob


150

Я отримую помилку, коли розміщую свою заявку в AdMob. Додаток працював до сьогодні. Помилка така:

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

Як я можу це виправити? Дякую.




Іноді: вимкніть підключення пристрою та спочатку складіть проект. Він створить бібліотеки, і тоді ви зможете запускатись у пристрої.
TheTiger

Відповіді:


114

Іноді ви просто видаляєте посилання на бібліотеку і додаєте посилання знову.

Окрім того, щоб знову додавати SDK Google Mobile Ads SDK та інші бібліотеки, я рекомендую вам перевірити Шляхи пошуку бібліотеки . Бувають випадки, коли ви копіюєте або копіюєте ціль, Xcode вирішує, що їй потрібно уникати подвійних лапок "з" \ ". Переконайтеся, що ви видалите всі \ - це має виглядати так -

введіть тут опис зображення

Мені вдалося скопіювати помилку, зробивши префікс мого шляху шляхом множини '\'.


добре, після встановлення стручка одна з бібліотек там не була перерахована. Я не знаю чому, але додаючи, що шлях до бібліотеки змушує її працювати.
Вовчак

Ну, це вирішило мою проблему "Бібліотеку не знайдено для -LART", і це справді неймовірно! Дякую !
ZedTuX

Розгляньте також "Шляхи пошуку заголовків".
Luat Vu Dinh

@raurora Як ви отримуєте доступ до шляхів пошуку бібліотеки?
Массімо Фріттеллі

1
@MassimoFrittelli Project> Вкладки Налаштування збірки> Шляхи пошуку. Ви також можете ввести варіант пошуку.
raurora

315

У мене був аналогічний випуск "бібліотеку не знайдено". Однак це було тому, що я випадково використовував .xcodeprojфайл замість цього .xcworkspaceфайлу.


4
Може хтось, будь ласка, пояснить мету .xcodeproj та .xcworkspace?
EFreak

11
Такі речі змушують мене любити екосистему Javascript
Марк

Як я можу це змінити ..?
Браян Лоайза

8
xcworkspace - це коли ви використовуєте Cocoapods. Це не проблема Xcode, а користувачів.
Азам

1
.xcworkspace - це коли у вас є більше 1 "проекту" всередині вашого рішення. Наприклад, ви можете мати зовнішні бібліотеки (cocoapods) або власну бібліотеку, яку ви використовуєте в багатьох проектах.
Даніель Бенедикт

86

Виберіть об'єкт, перейдіть "Build Phases"в "Link Binary With Libraries"видалити ".a"файл з бібліотеки. Очистити та побудувати.


3
Так, досить дивно, що Xcode не позначає його відсутнім, фарбуючи його в червоний колір
мозковий масив

Дійсно приємно !! моя проблема була тоді, коли я додав рамки користувача до старого проекту. Видаліть coreplot.a і працює чудово !!!!
Хосе Поза S

66

Якщо помилка пов'язана з Cocoapods:

library not found for -lPod-...

Вам потрібно перевірити інші прапорці Linker і видалити їх звідти.

Додаткова інформація: Якщо у вас є старий проект, який використовує какаоподи. А нещодавно вам потрібно було додати use_frameworks! до вашого підфільму. cocoapods більше не додаватимуть бібліотеки до ваших інших прапорів Linker, тому вони не передадуть її у спадок. Тому вам може знадобитися видалити ці вручну з інших прапорів посилання, які вони були додані перед використанням use_frameworks!


1
У мене тут багато прапорів, я повинен зняти всі або лише один для Pod?
Маюр Дешмух

Якщо ці прапори викликають проблеми. ви повинні їх видалити або зберегти і додати бібліотеку, якщо ви все ще хочете нею користуватися.
хасан

1
Я думаю, що це відбувається, коли ви намагаєтесь видалити бібліотеку, яку додають стручки какао вручну. Правильний спосіб - видалити бібліотеку зі свого підфілю. тоді ви знову запустите pod install
hasan

1
Дякую!! Це була для мене підказка :). У моєму випадку дублююча ціль розділила кожну -l "рамку" на два рядки "-l" та "frame" !!
Eva Madrazo

1
@IanSteffy просто поєднуй це
Єва Мадразо

57

У моєму випадку Xcode 7 , який також працював у Xcode 9.1

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

встановити Build Active architecture OnlyвYes

введіть тут опис зображення


2
Що робити, коли нам потрібно створити збірку виробництва для App Store? Я маю на увазі, що це повинно бути НІ для виробництва виробництва.
Джаббар

погодьтесь, це повинно бути НІ для виробництва
Тед

2
Чи це НЕ вплине на встановлення виробництва?
Джаббар

1
Працював для мене під час інтеграції Pinterest SDK на XCode 9.2 та iOS 11.
Aakash Aggarwal

21

Це трапляється, якщо ви використовуєте cocoapods, використовуйте .xcworkspaceфайл замість файлу за замовчуванням .xcodeproj.


15

Якщо помилка виглядає наступним чином

ld: бібліотека не знайдена для -lpods

Я виявив, що файл "libPods.a" червоного кольору (як і відсутні файли) був створений якимось чином у групі Framework проекту. Я просто видалив цей файл і все вийшло нормально.

EDIT: Ще одне рішення

Ще одне рішення, на яке я вже відповів у подібному питанні, знаходиться у цьому посиланні


12

goto Build Phases -> Пов’язати бінарне з бібліотеками та видалити бібліотеку, яка показує помилки, оскільки ця бібліотека недоступна в папці проекту


Це вирішило мою конкретну проблему. У мене було дві схожі іменовані бібліотеки, одна названа libPods-Foo BarTests.aта інша названа libPods-FooBarTests.a.
edenwaith

9

Це також може статися, якщо ви відкриєте файл проекту замість робочої області. Я так витрачав себе, як день.


1
відмінно, я також зробив оновлення стручка під час закриття робочої області, потім відкрив його після завершення оновлення стручка
Badr

5

Пізно для відповіді, але ось перелік речей, які я спробував. Тому він буде в одному місці, якщо хтось захоче спробувати виправити проблему.

  1. Дійсна архітектура = armv7 armv7s
  2. Створюйте лише активну архітектуру = НІ
  3. Ціль -> Налаштування збірки -> Інші прапорці Linker = $ (успадковується)
  4. Ціль -> Налаштування збірки -> Шлях пошуку в бібліотеці = $ (успадковується)
  5. Продукт чистий
  6. Оновлення Pod у терміналі

2

У моєму випадку виникла проблема з називанням. Мою бібліотеку викликали ios-admob-mm-adapter.a, але Xcode очікував, що назва має починатися з префікса lib . Я щойно перейменував свою губку libios-admob-mm-adapter.aі вирішив проблему.

Я використовую Cocoapods, і він пов'язує бібліотеки з опцією Other flags flags в настройках збірки моєї цілі. Прапор виглядає так-l"ios-admob-mm-adapter"

Сподіваюся, це допоможе комусь іншому


2

Просто GoogleAdMobAds.aвідсутня в цілі проекту. Для мене це, libAdIdAccessLibrary.aбудь ласка, перевірте доданий скріншот

введіть тут опис зображення


2

Як на мене, ця проблема виникає через те, що я встановив Бібліотеку матеріалів для IOS. щоб вирішити це питання

1: Перейдіть до " Налаштування збірки " вашого цільового додатка.

2: Пошук інших прапорів лінкерів

3: Відкрийте інші прапорці лінкера та перевірте наявність бібліотеки, яка згадується про помилку.

4: видаліть цей прапор.

5: Очистити і наростити.

Сподіваюся, це вирішить вашу проблему.


2

У випадку, якщо це ld: library not found for -{LIBRARY_NAME}трапляється через те, що бібліотечні файли (файли) не існують.

Перевірте шлях бібліотеки на вкладці "Ваші додатки" на вкладці Шляхи пошуку бібліотеки.

Шлях до файлів бібліотеки повинен відповідати реальному шляху, наприклад, якщо ваш файл (и) в корені проекту, ви повинні встановити шлях, як $(PROJECT_DIR)


1

Я знаю, що це трохи старе, але я просто потрапив у аналогічну проблему, і запуск "оновлення pod" вирішив це для мене. Помилка моєї бібліотеки була за допомогою AFNetworking ...

Будьте обережні, виконуючи оновлення стручка, якщо ви не використовуєте явних версій у файлі.


1

Ця помилка дуже дивна.

У мене виникла помилка з -ldAfnetworking, і я копіюю свій проект лише в інший шлях і твори.


1

Я спробував перейменувати мою конфігурацію збірки Releaseдля Production, але , мабуть , стручки какао не подобається. Я знову перейменував його на Release, і все будується просто чудово.


Ви також могли перейменувати ціль у підфілі.
Ромен TAILLANDIER

1

Відповідь @ raurora вказала на мене в правильному напрямку. Я включав бібліотеки до мого шляху "розширення / ліб" watchkitapp. У цьому випадку Шлях пошуку бібліотеки потрібно було уникнути знаком "\", але пов'язуючий зв'язок, схоже, цього не зрозумів. Щоб вирішити / вирішити проблему, я перемістив шлях ліб вгору на один рівень, щоб його більше не було в каталозі, який містив пробіл у назві.


1

Я просто оновлюю файл "pod update", і він починає нормально працювати для мене.


1

Запуск "оновлення pod" в моєму проекті вирішив мою проблему з помилкою "бібліотека не знайдена для -lSTPopup".

Згадуючи відповідь Тревора Панхорста:

"Будьте обережні, виконуючи оновлення стручка, якщо ви не використовуєте явних версій у файлі файлу."


1

Просте рішення. Ось як я вирішував проблему:

  1. Перейдіть до каталогу platforms/ios
  2. Потім виконайте команду pod install

Це воно. Слід встановити відсутні бібліотеку.


1
  1. Очищена папка збірки
  2. Перезапущений XCode

Відійшов ...


1

Це похибка часу компіляції для того, Static Libraryщо викликаноStatic Linker

ld: library not found for -l<Library_name>
  1. Ви можете отримати помилку, Library not found forякщо не включили шлях до бібліотекиLibrary Search Paths

    ldзасоби, Static Linkerякі не можуть знайти місцезнаходження бібліотеки. Як розробник, ви повинні допомогти лінкеру та вказати наLibrary Search Paths

    Build Settings -> Search Paths -> Library Search Paths 
  2. Також ви можете отримати цю помилку, якщо вперше відкриєте новий проект ( .xcodeproj) із підтримкою Cocoapods, запустіть pod update. Щоб виправити це, просто закрийте цей проект і відкрийте створену робочу область замість ( .xcworkspace)


0

Я отримував подібні помилки в бібліотеці не знайдені. Зрештою, саме так я зміг її вирішити

  1. Перш ніж почати з Xcode Archive, використовували flutter build iOS
  2. Змінено ціль розгортання IOS на більш високу ціль iOS 11.2. Раніше у мене було щось на кшталт 8.0, яке давало всі перераховані вище помилки.
  3. Переконайтесь, що цілі розгортання IOS у Xcode однакові у Project, Target та Pods
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.