Ошибка «библиотека не найдена для» после помещения приложения в 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.