Ошибка «библиотека не найдена для» после помещения приложения в AdMob


150

Я получаю сообщение об ошибке после того, как я разместил заявку в AdMob. Приложение работало до сегодняшнего дня. Ошибка заключается в следующем:

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

Как я могу это исправить? Спасибо.


Попробуйте это: stackoverflow.com/questions/1471968/…
nmh


Иногда: отключите ваше устройство и сначала соберите проект. Он будет генерировать библиотеки, а затем вы сможете запустить на устройстве.
TheTiger

Ответы:


114

Иногда вы просто удаляете ссылку на библиотеку и снова добавляете ссылку.

Помимо добавления SDK Google Mobile Ads и других библиотек снова, я бы порекомендовал вам проверить пути поиска библиотек . Существуют случаи, когда вы копируете или дублируете цель, XCode решает, что ему нужно избегать любых двойных кавычек "с помощью" \ ". Убедитесь, что вы удалили все \" - это должно выглядеть следующим образом -

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

Я смог продублировать ошибку, выполнив префикс моего пути с несколькими '\'.


хорошо, после установки pod, одна из библиотек там не была указана. Я не знаю почему, но добавление этого пути к библиотеке заставляет его работать.
Warewolf

Ну, это исправило мою проблему "Библиотека не найдена для -LART", и это действительно невероятно! Спасибо !
ZedTuX

Также рассмотрим «Пути поиска по заголовкам».
Луат Ву Динь

@raurora Как получить доступ к путям поиска в библиотеке?
Массимо Фриттелли

1
@MassimoFrittelli Project> вкладки «Настройки сборки»> «Пути поиска». Вы также можете ввести опцию поиска.
Рауроа

316

У меня была похожая проблема "библиотека не найдена". Однако это было потому, что я случайно использовал .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 не помечает его как отсутствующий, окрашивая его в красный цвет
brainray

Действительно мило!! Моя проблема была, когда я добавил пользовательский фреймворк в старый проект. Удалите coreplot.a и работает отлично !!!!
Хосе Позе S

66

Если ошибка связана с Cocoapods следующим образом:

library not found for -lPod-...

Вы должны проверить другие флаги компоновщика и удалить его оттуда.

Дополнительная информация: если у вас есть старый проект, который использует cocoapods. И недавно вам нужно было добавить use_frameworks! на ваш подфайл. cocoapods больше не будет добавлять библиотеки в другие флаги других линкеров, потому что они наследуются. Поэтому вам может потребоваться удалить те вручную из других флагов компоновщика, которые они были добавлены перед использованием use_frameworks!


1
У меня есть много флагов здесь, я должен удалить все или только один для Pod?
Mayur Deshmukh

Если эти флаги вызывают проблемы. Вы должны удалить их или оставить их и добавить библиотеку, если вы все еще хотите ее использовать.
Хасан

1
Я предполагаю, что это происходит, когда вы пытаетесь удалить библиотеку, добавленную какао-бобами вручную. Правильный способ - удалить библиотеку из вашего подфайла. затем снова запускаешь pod install
hasan

1
Спасибо!! Это был ключ для меня :). В моем случае цель-дубликат делит каждую -l "framework" на две строки "-l" и "framework" !!
Ева

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.
Аакаш Аггарвал

21

Это происходит, если вы используете cocoapods, используйте .xcworkspaceфайл вместо файла по умолчанию .xcodeproj.


15

Если ошибка похожа на следующую

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

Я обнаружил, что файл "libPods.a" красного цвета (например, отсутствующие файлы) был каким-то образом создан в группе Framework проекта. Я просто удалил этот файл, и все стало хорошо.

РЕДАКТИРОВАТЬ: другое решение

Другое решение, на которое я уже ответил в подобном вопросе, находится в этой ссылке


12

Перейти к этапам сборки -> Связать двоичные файлы с библиотеками и удалить библиотеку, в которой отображаются ошибки, поскольку эта библиотека недоступна в папке проекта


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

9

Это также может произойти, если вы откроете файл проекта вместо рабочей области. Я потратил впустую как этот день сам.


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

5

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

  1. Действительная архитектура = armv7 armv7s
  2. Строить только активную архитектуру = НЕТ
  3. Цель -> Настройки сборки -> Другие флаги компоновщика = $ (наследуется)
  4. Цель -> Настройки сборки -> Путь поиска библиотеки = $ (наследуется)
  5. Чистый продукт
  6. Обновление Pod в терминале

2

В моем случае возникла проблема с именами. Моя библиотека называлась ios-admob-mm-adapter.a, но Xcode ожидал, что имя должно начинаться с префикса lib . Я только что переименовал мою библиотеку вlibios-admob-mm-adapter.a и исправил проблему.

Я использую Cocoapods, и он связывает библиотеки с опцией Other linker 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 update» исправил это для меня. Моя ошибка библиотеки была с AFNetworking ...

Просто будьте осторожны при обновлении pod, если вы не используете явные версии в вашем файле pod.


1

Эта ошибка очень странная.

У меня была эта ошибка с -ldAfnetworking, и я только копирую свой проект по другому пути и работает.


1

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


Вы также могли бы переименовать цель в подфайле.
Romain TAILLANDIER

1

Ответ @ raurora указал мне правильное направление. Я включил библиотеки в мой путь "watchkitapp Extension / lib". В этом случае путь поиска в библиотеке должен был быть экранирован знаком '\', но компоновщик, похоже, этого не понимал. Чтобы исправить / обойти проблему, я переместил свой путь к lib на один уровень, чтобы он больше не находился в каталоге с пробелом в имени.


1

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


1

Запуск pod update в моем проекте устранил мою проблему с ошибкой «библиотека не найдена для -lSTPopup».

Отмечая ответ Тревора Панхорста:

«Просто будьте осторожны при обновлении pod, если вы не используете явные версии в вашем файле pod».


1

Простое решение. Вот как я могу решить эту проблему:

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

Вот и все. Это должно установить недостающую библиотеку.



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 использовалась сборка флаттера 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.