Ошибка "библиотека не найдена для"
У меня ошибка после того, как я вставил в свое приложение 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 проекта. Я просто удалил этот файл, и все стало хорошо.
РЕДАКТИРОВАТЬ: другое решение
Другое решение, на которое я уже ответил в подобном вопросе, находится в этой ссылке
Перейти к этапам сборки -> Связать двоичные файлы с библиотеками и удалить библиотеку, в которой отображаются ошибки, поскольку эта библиотека недоступна в папке проекта
Это также может произойти, если вы откроете файл проекта вместо рабочей области. Я потратил впустую как этот день сам.
Поздно для ответа, но вот список вещей, которые я пытался. Так что это будет в одном месте, если кто-то хочет попытаться решить проблему.
- Действительная архитектура = armv7 armv7s
- Строить только активную архитектуру = НЕТ
- Цель -> Настройки сборки -> Другие флаги компоновщика = $(наследуется)
- Цель -> Настройки сборки -> Путь поиска библиотеки = $(наследуется)
- Чистый продукт
- Обновление Pod в терминале
Это ошибка времени компиляции для Static Library
это вызвано Static Linker
ld: library not found for -l<Library_name>
Вы можете получить ошибку
Library not found for
если вы не указали путь библиотеки кLibrary Search Paths
ld
средстваStatic Linker
который не может найти расположение библиотеки. Как разработчик вы должны помочь компоновщику и указатьLibrary Search Paths
Build Settings -> Search Paths -> Library Search Paths
Также вы можете получить эту ошибку, если впервые открываете новый проект (
.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"
Надеюсь, это поможет кому-то еще
Просто, 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.
Простое решение. Вот как я могу решить эту проблему:
- Перейти в каталог
platforms/ios
- Затем выполните команду
pod install
Вот и все. Это должно установить недостающую библиотеку.
Я также столкнулся с той же проблемой и потратил более 24 часов на ее решение, я пробовал все из вышеперечисленных решений, но в конечном итоге у меня сработало
1) Настройки сборки -> Выбрать цель 2) Основы 3) Определяется пользователем 4) Измените VALID_ARCHS на arm64
Вот как я исправил проблему:
- Перейти в каталог
platforms/ios
- Затем выполните команду
pod install
Вот и все.
Чувак, тебе нужна переустановка.
- Удалите просто стручки "rm -rf".
- Установите 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
Источник здесь
У меня были похожие ошибки в библиотеке, которая не найдена. В конце концов, вот как я смог это решить
- Перед тем, как начать с Xcode Archive, использовал флаттер-билд iOS
- Изменена цель развертывания IOS на более высокую цель iOS 11.2 . Раньше у меня было что-то вроде 8.0, которое выдавало все указанные выше ошибки.
- Убедитесь, что цели развертывания IOS в Xcode совпадают в Project, Target и Pods.
watchman watch-del-all; npm start -- --reset-cache
казалось, сделал это для меня... Я часто делаю это, когда все остальное терпит неудачу
здесь то же самое, но в моем случае разрешилось ответом на кенорб