ld: рамки не найдены

234

Я пытаюсь добавить фреймворк в свой проект IOS, но при сборке я всегда получаю одно и то же сообщение:

ld: рамки не найдены

clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

Я попытался удалить свой Podsкаталог и затем запустить, pod install я открываю, .xcworkspaceкак это написано в журналах установки pod, я очищаю проект на xcode, а затем пытаюсь собрать, но он не работает ..

Мой подфайл выглядит так:

xcodeproj '/Users/guillaume/project/Mobile/iOS/FoodPin/FoodPin.xcodeproj'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'SwiftHTTP', '~> 0.9.2'

Моя версия xcode 6.3.1

Спасибо,

Kaëris
источник
1
Вы проверили, что libpods.aнаходится в ваших «Связанных структурах и библиотеках» вашей цели? И в ваших фазах сборки тоже?
BoilingLime
Вам удалось решить это? У меня та же ошибка
Кристофер Франциско
@ChristopherFrancisco Я решил, проверь мой ответ.
Арбитур
1
Это как ответить [1] решило мою проблему! Надеюсь, что это поможет [1]: stackoverflow.com/a/31161871/1557663
Марио Карвалью
@ MárioCarvalho Это просто более длинная и более удобная для начинающих версия моего ответа x)
Arbitur

Ответы:

524

В Project Navigatorпапке у Podsменя был Pods.frameworkтам, который был красным. Это также присутствовало в Linked Frameworks and Libraries. Я удалил обе ссылки, и ошибка исчезла.

TL; DR

Удалить Pods.frameworkв:

  • Папка с именем Pods
  • Linked Frameworks and Libraries
Arbitur
источник
5
Я думаю, что я закончил с этой проблемой после добавления use_frameworks! к моему Podfile и впоследствии комментируя это. Удаление ссылки на Pods.framework решило проблему.
StephenT
2
@StephenT Да , я считаю , вот что я сделал тоже, сначала использовать , use_frameworks!а затем без и , возможно, Pods.frameworkбыл должным образом не удаляется во время pod install. Может быть ошибка в Cocoapods.
Арбитур
Это хороший ответ, не влияет на пример приложения, он все еще работает хорошо
Габриэль Гонсалвес
3
Если это не работает, попробуйте использовать cocoapods-deintegrate. Это просто решило эту проблему для меня.
nickdnk
2
После запуска установки pod я каким-то образом получил файл фреймворка «Pods_ <Project Name>». В моей папке Pods. Удаление этого файла, очистка и восстановление удалили эту ошибку для меня.
Калеб Фаруки
209

Обычно это вызвано открытием файла .xcodeproj вместо .xcworkspace.

Когда вы запускаете 'pod install' в первый раз, он создаст файл .xcworkspace, который включает ваш оригинальный .xcodeproj и проект Pods. Вам нужно будет закрыть ваш .xcodeproj и вместо этого открыть .xcworkspace.

Это распространенная проблема при создании проекта с помощью нового мастера проектов Xcode - я часто забываю, что я не нахожусь в рабочей области, которая необходима для правильной связи Cocoapods.

Крис Тревартен
источник
Спасибо ! Это смущает меня в первый раз
Фи Нгуен
6
Ваше объяснение намного лучше, чем я видел в другом месте. Я не понимал, что происходит. Спасибо!
Майкл Яворский
Когда это сделано в сочетании с ответом Арбитура, это решает проблему. Спасибо!
user1577390 13.09.16
Это была именно моя проблема. Спасибо!
Антонио Папалильо
внутри моего проекта нет файла .xcworkspace. что делать
Kartiikeya
126

Xcode 9, 10, 11, 11,5

установить https://github.com/CocoaPods/cocoapods-deintegrate

pod deintegrate

затем

pod install
Тед
источник
1
Работал как шарм! Спасибо. Это избавило от старой ссылки на переименованную цель, которая вызывала эту ошибку.
Алекс Обенауэр
1
Ты мой герой! ;)
Swissdude
1
Вау, Ты спас мой день! застрял со вчерашнего дня и окончательно решил с Xcode 10. Спасибо!
Пурушоттам Падхья
1
Это должен быть правильный ответ, это самый безопасный подход. Не выполняйте ручные действия при использовании автоматизированных программ, таких как CocoaPods, если только это не известная ошибка, которая не может быть исправлена ​​иначе.
Гобе
1
Помоги мне, удивительный чувак!
Sruit A.Suk
51

Я очистил эту ошибку, удалив красные .frameworkфайлы, которые находились в папке Frameworksв project navigator. Я думаю, что это также автоматически удалил соответствующие красные записи в Linked Frameworks and Librariesразделе Generalнастроек.

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

theblang
источник
Да! Моя проблема была в связанных структурах и библиотеках общих настроек, и ее было трудно найти, поскольку она не подходит для текстового поиска!
Алистер Купер
В моем случае файлы фреймворка были даже не красными, а просто серыми. Но удаление их, похоже, решило проблему!
Мошенник
29

Для тех, кто находит эту проблему. Я использую NativeScript и получил ту же ошибку.

Это произошло потому, что я открыл файл .xcodeproj, но мы должны открыть проект с помощью файла .xcworkspace.

calebeaires
источник
27

Это случилось со мной после обновления моего Podfile и выполнения обновления pod.

По какой-то причине у меня был файл фреймворка «Pods_ [ProjectName]». Под моим проектом в «Цели»> «Общие»> «Связанные фреймворки и библиотеки».

Удаление этого, а затем очистка / восстановление исправили проблему.

Эллиот Дэвис
источник
2
Это происходит, когда вы меняете имена проектов и вам нужно очистить старые. +1
Babbz77
Это сработало для меня. Я не менял названия проектов, но добавил Swift в продолжительный проект Objective-C.
Луффи
24

У меня была похожая проблема как

framework not found Pods_OneSignalNotificationServiceExtension

Это было решено путем удаления следующего. Перейдите к цели OneSignalNotificationServiceExtension> Фазы сборки> Связать двоичные файлы с библиотеками и удалите Pods_OneSignalNotificationServiceExtension.framework.Здесь должно быть пусто. Надеюсь, это поможет. Приветствия.

Шарух Мастан
источник
Это исправило проблему для меня. Моя конкретная ситуация заключается в том, что у меня была мишень для iOS MyApp. Затем мне нужно было создать вторую цель и иметь цели MyAppFirst, MyAppSecond. Cocoapods был в состоянии построить то, что ему нужно (Pods_MyAppFirst, Pods_MyAppSecond), но он также пытался соединиться с Pods_MyApp, которого больше не было. Я хочу отметить, что в процессе исправления я выбрасывал свой файл рабочей области и папку Pods, чтобы они воссоздали их с нуля, когда я выполнял «pod -install», но это не помогло.
xdeleon
@Sharukh Mastan Можете ли вы представить, как это сделать после установки модуля? Каждый раз, когда я устанавливаю модуль, Pods_OneSignalNotificationServiceExtension.framework меня часто преследуют связанные структуры и библиотеки OneSignalNotificationServiceExtensionцели.
Sethmr
@ Sethmr К сожалению, нет. В моем случае, однако, это не всегда происходит после pod install, это случайно.
Шарух Мастан
@SharukhMastan Моя проблема была открыта *.xcodeproj/*.xcworkspaceчерез *.xcworkspaceмой сценарий автоматизации vsts .yml. Я знаю лучше с графическим интерфейсом, но все еще привыкаю к ​​требованиям в области написания скриптов.
Sethmr
15

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

pod deintegrate

с последующим

pod install
Осама
источник
Да! У меня была такая же проблема при понижении версии с 12.0 до 9.0. Вышеописанное сработало после того, как я изменил целевую версию в своем Podfile, чтобы она соответствовала тому, что было в проекте.
Ричард Баун
Хороший ответ. Спасибо.
whdals0
14

Вы должны удалить свой проект некоторый файл как эта картина.

Вы должны удалить файлы pods.framework и pods mark красные файлы

lingyfh
источник
10

Просто удалите .framework из списка «Ваш проект-> Общие-> Связанные рамки и библиотеки».

Ибрагим
источник
Вот и все, у меня было два после того, как я переименовал проект. Спасибо!
Джимми
10

Это случилось со мной , потому что я изменил Deployment Targetв Generalно забыл изменить Deployment Targetин Pods > General. Изменить цель развертывания

Дарий
источник
Исправил это и для меня, Xcode 11.2 / Cocoapods 1.8.4. Раздражает, что сообщение об ошибке не имеет никакого сходства с основной причиной ...
Джонатан Эллис
1
Исправил это для меня - не имел понятия, что мне нужно изменить это в обоих местах. Благодаря тонну!
хаказвака
6

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

  • удалять Pods.framework
  • удостовериться Pods-<project-name>.framework встроен

Вы найдете настройки в TARGETS -> Связанные фреймворки и библиотеки.

SeanChense
источник
Не могли бы вы проверить это: github.com/CocoaPods/CocoaPods/issues/…
Esqarrouth
4

Шаг 1

Первое, что вам нужно сделать, это удалить Podfile, Podfile.lock, папку Pods и сгенерированное рабочее пространство.

Шаг 2

Затем в .xcodeproj удалите ссылки на файлы Pods.xcconfig и файл libPods.a.

Шаг 3

На вкладке проекта Build Phases удалите раздел Check Pods Manifest.lock (открыть), раздел «Copy Pods Resources» (внизу) и «Embed Pod Resources» (внизу).

Step4

Удалить Pods.framework.

Единственное, что вы можете захотеть сделать, - это включить некоторые библиотеки, которые вы использовали ранее. Вы можете сделать это, просто перетащив любые папки из папок pods в ваш проект (я предпочитаю помещать их в мою папку «Файлы поддержки»).

Это сработало для меня.

AG
источник
Шаг 3 работал в моем случае, шаг 3 -> cmd + alt + shift + k.
ViruMax
4

Вы более чем вероятно пытаетесь заставить стручки работать в вашем проекте, верно? Единственный способ сделать это - создать отдельный проект, который использует CocoaPods.

Закройте все рабочие пространства, которые вы используете.

Затем убедитесь, что ваш Podfile полностью готов к работе.

В командной строке, где бы ни находился ваш файл, введите команду:

pod deintegrate

Затем установите свой pag agian.

pod install or pod update

Теперь вы можете использовать новое рабочее пространство вашего проекта для разработки. Найдите файл с именем .workspace. Используйте этот файл!

Вот руководство по использованию CocoaPods

Эммануэль Мбаба
источник
Только этот работал у меня после борьбы 2 дней с ошибкой.
Mitesh Dobareeya
3

Используя Xcode 8.3, принятый ответ не работал для меня. Я перепробовал много других решений, но ответ @Elliott Davies это то, что мне помогло. Я добавляю скриншот для ясности. По какой-то причине Xcode пытался связать предыдущие настройки подфайлов, которых больше не было. Все, что мне нужно было сделать, это удалить лишние ссылки, и все заработало.Скриншот связанных с Xcode фреймворков и библиотек

jbryant
источник
3

Эта проблема сводила меня с ума, поскольку внезапно произошла без каких-либо изменений в проекте. Я попробовал все предложенные решения в этой теме (и другие связанные), и ни один из них не решил проблему.

Единственное, что отличалось от других моих проектов (которые компилировались нормально), было то, что в названии этого проекта был акцент (французский акцент, «é»). Я переименовал проект и все связанные файлы, и он наконец заработал!

Может быть, это связано с обновлением до Xcode 10, потому что этот проект работал задолго до ...

РЕДАКТИРОВАТЬ: он также, кажется, не удалось при использовании проекта с -в имени проекта ...

AnthoPak
источник
1
Ты спас мне жизнь
Florian Mac Langlade
1
Спасла мою жизнь тоже!
Дан
Любое решение кроме переименования проекта?
анестис
@anestis Я так не думаю. Чтобы быстро переименовать проект, я предлагаю команды из этого ответа stackoverflow.com/a/48004237/4894980, которые делают очень большую работу!
AnthoPak
3

В моем случае, после сравнения различий между ветками, которые я знал правильно построенными, я заметил эту строку в моем Podfile:

platform :ios, '11.0'

Я случайно поднял целевую версию с 10 до 11, в то время как мои цели в XCode остались равными 10. Возвращение к 10 решило мою проблему для меня.

Убедитесь, что ваши целевые версии iOS установлены правильно.

joels
источник
Вы спасли мой день! Спасибо
Mayank Патель
3

Так я решу свою проблему. и теперь это работает, когда я пишу этот ответ:

Во-первых, я стараюсь все самое лучшее, как указано выше,

Удалить Pods_xxx.framework из библиотек ссылок и инфраструктуры на этапах сборки цели полезно, и проблема исчезнет, ​​но проблема заключается в том, что я больше не могу импортировать Pods.framework.

А затем я пытаюсь переустановить конфигурацию xcworkspace, чтобы выяснить реальную проблему. так что я бегу

pod deintergate

а затем снова установите мой модуль:

pod install

эта работа идеально, но проблема все еще там, но я понимаю, что реальная проблема заключается в том, что Pods_xxx.framworks не может быть скомпилирован успешно сценарием сборки cocoapods. Я думаю, что это верный способ решить проблему.

Наконец, я пытаюсь изменить схему моего проекта:

Схемы стручков не редактируются

и я добавляю схему Pods в управление:

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

и создайте эту Pods.framework отдельно, и вы увидите, что значок Pods.framework снова станет действительно:

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

и я думаю, что теперь у вас есть исправление вашей проблемы "framework not found Pods_xxxx.framework", но на самом деле у меня есть еще одна проблема:

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

так что я иду к настройке сборки, и редактировать "Framework Search Path"с "${inherited}", и теперь все проблемы уходит, развеселить !!!! :)

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

Левин Веблен
источник
Добавление цели Pod и ее сборка на самом деле показали, что не так со сборкой pod. В нашем случае это был быстрый конфликт версий. Спасибо!
green0range
Я не следовал за всеми шагами. Я просто добавил этот ${inherited}путь, затем сделал Product->Clean Build Folder, и все, теперь он собирается без проблем.
Starwave
2

После удаления и обновления модуля у меня осталась та же проблема.

Я обнаружил, что предыдущий разработчик поставил флаг в « Настройки сборки -> Другие флаги компоновщика». » с именем Framework (в моем случае - фреймворк «OGVKit»), который создал проблему.

После удаления этого флага, проект собирается правильно.

Babac
источник
Спасибо вам большое! Вы всегда должны следить за тем, что выделено жирным шрифтом в настройках сборки!
Марсио Гранцотто
2

Я действительно испытал эту проблему, потому что я не установил platformправильно.

Итак, в моем приложении MacOS была установлена ​​платформа:

platform :ios

вместо того

platform :osx
Besi
источник
1

Я решил эту проблему, выбрав проект, который загрузил CocoaPodsи собрал его. Вы можете нажать «Управление схемами», чтобы отобразить его на панели «Выполнить». Затем вы можете восстановить свой проект. Надеюсь, это поможет.

vinhsteven
источник
1

В моем случае была ссылка на библиотеку, которую я удалил на

Цели> Настройки сборки> Пути поиска по пути

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

Марина Агилар
источник
1

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

В моем случае мне пришлось отредактировать мой подфайл в корне моего проекта. Когда я впервые создал свой подфайл, быстрые статические библиотеки не поддерживались. Так что я использовалuse_frameworks! в своем подфайле под каждой из моих целей как таковой:

ПЕРЕД

...
target 'targetName' do
   use_frameworks!
   pod 'podName', '~> 0.2'
end

ПОСЛЕ

...
target 'targetName' do
   pod 'podName', '~> 0.2'
end

Я удалил use_frameworks!из своего подфайла, который продолжал устанавливать фреймворки каждый раз, когда запускал pod install. После удаления этой строки обязательно запустите pod installснова и удалите все красные ссылки .framework из папки Frameworks в XCode. (Хотя мое выглядело иначе, как прикреплено ниже.)

Образ удаления файлов .framework, которые больше не нужны

Вы также можете прочитать больше о use_framework! здесь .

the.giologist
источник
0

Если вы открыли файл .xcworkspace и у вас все еще появляется та же ошибка:

delete all the contents of Pods directory and from command line write "pod install" to resolve the issue.
Alp Altunel
источник
0

Удалите папку frameworks, созданную после установки или обновления модуля

Xcoder
источник
0

Другая вещь, которая решила мою проблему, это пойти под Target -> Build Settings -> Other Flags Linker и удалить «-framework» и вашу структуру «name».

Это случилось, когда я попытался удалить стручок.

atacand1920
источник
0

Я решил это путем перетаскивания .frameworkфайла в Linked Framework и библиотеки

Допустим, у меня возникла эта проблема из-за ошибки, FIRAnalyticsConnector not foundи я просто перетащил FIRAnalyticsConnector.framworkфайл в Linked Framework и библиотеки, и моя проблема решена

Султан али
источник
0

Я попробовал каждый ответ здесь, и ни один из них не работал. Я закончил тем, что начал работать, подняв цель развертывания с 10.0 до 11.0. Я понятия не имею, почему это исправило это, но я подозреваю, что это имеет отношение к обновлению до Xcode 10.2.1.

аферист
источник
0

может быть, вы вдруг открыли не тот файл .xcodprj, и вам следует открыть .xcworkspace

amirtutunchi
источник
Лучше оставить такой комментарий.
Масуд Рахими
0

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

  1. Имя исполняемого файла должно нравиться без расширения.

  2. Некоторые рамки, показывающие это введите описание изображения здесь

  3. Использование терминала Перейти к каталогу .framework используйте следующую команду: lipo -create FrameworkName-x86_64 FrameworkName-armv7 FrameworkName-armv7s FrameworkName-i386 FrameworkName-arm64 -output FrameworkName

после создания одного исполняемого файла удалите эти файлы введите описание изображения здесь

Пурначандар Рао Волети
источник