Ошибка "библиотека не найдена для"

У меня ошибка после того, как я вставил в свое приложение admob. вчера приложение работало нормально, но сегодня оно больше не работает.. ошибка заключается в следующем:

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

как это исправить? Спасибо!!

30 ответов

Решение

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

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

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

У меня была похожая проблема "библиотека не найдена". Однако это было потому, что я случайно использовал .xcodeproj файл вместо .xcworkspace файл.

Выберите цель, перейдите к "Build Phases" в "Link Binary With Libraries" Удалить ".a" файл этой библиотеки. Очистить и построить.

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

library not found for -lPod-...

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

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

Для моего случая 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

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

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

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

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

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

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

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

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

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

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

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

Это ошибка времени компиляции для 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)

Что касается меня, эта проблема возникает, потому что я установил Библиотеку материалов для IOS. решить эту проблему

1: Зайдите в настройки сборки вашего целевого приложения.

2: Поиск других флагов компоновщика

3: Откройте другие флаги компоновщика и проверьте библиотеку, которая упоминается в сообщении об ошибке.

4: уберите этот флаг.

5: Очистить и построить.

Я надеюсь, что это исправит вашу проблему.

В случае ld: library not found for -{LIBRARY_NAME} произошло, потому что файл (ы) библиотеки не существует.

Проверьте путь к библиотеке на вкладке "Пути поиска библиотек" целевого приложения.

Путь к файлам библиотеки должен быть в соответствии с реальным путем, например, если ваш файл (ы) в корне проекта, вы должны установить путь как $(PROJECT_DIR)

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

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

Надеюсь, это поможет кому-то еще

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

Ушел...

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

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

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

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

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

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

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

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

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

Я знаю, что это немного устарело, но я столкнулся с подобной проблемой, и запуск "pod update" исправил это для меня. Моя ошибка библиотеки была с AFNetworking...

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

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

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

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

Я также столкнулся с той же проблемой и потратил более 24 часов на ее решение, я пробовал все из вышеперечисленных решений, но в конечном итоге у меня сработало

1) Настройки сборки -> Выбрать цель 2) Основы 3) Определяется пользователем 4) Измените VALID_ARCHS на arm64

Вот как я исправил проблему:

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

Вот и все.

Чувак, тебе нужна переустановка.

  1. Удалите просто стручки "rm -rf".
  2. Установите Pods «установка комплекта exec pod»

Тогда хорошо работает.

Это ошибка времени компиляции для Library это обусловлено Static Linker

ld: library not found for -l<Library_name>

Вы можете получить ошибку Library not found for если вы не указали путь к Library Search Paths

Вы столкнулись с этой проблемой, потому что Static Linker не может найти местоположение библиотеки, просто сообщите XCode, где они находятся, добавив правильный каталог к ​​путям поиска библиотеки в XCode для связи.

Build Settings -> Search Paths -> Library Search Paths 

Источник здесь

У меня были похожие ошибки в библиотеке, которая не найдена. В конце концов, вот как я смог это решить

  1. Перед тем, как начать с Xcode Archive, использовал флаттер-билд iOS
  2. Изменена цель развертывания IOS на более высокую цель iOS 11.2 . Раньше у меня было что-то вроде 8.0, которое выдавало все указанные выше ошибки.
  3. Убедитесь, что цели развертывания IOS в Xcode совпадают в Project, Target и Pods.
watchman watch-del-all; npm start -- --reset-cache

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

здесь то же самое, но в моем случае разрешилось ответом на кенорб

Другие вопросы по тегам