Я импортировал рамки для отправки электронной почты из приложения в фоновом режиме, т.е. SKPSMTPMessage
Framework. Может кто-нибудь подсказать почему ниже показывается ошибка
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
objc-class-ref in ConfirmController.o
"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartMessageKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
"_kSKPSMTPPartContentTypeKey", referenced from:
-[ConfirmController sendEmail] in ConfirmController.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Источник, из которого взяты рамки: -
Блокировка полей в MFMailComposeViewController
Обновить :
Ответ. Просто перетащите папку над проектом и нажмите «Копировать». То есть он выбирает флажок проекта и целевой флажок, а также.
Ответы:
Вы можете получить этот тип ошибки, если файл .m вашего класса не указан на шаге «Скомпилировать источники» на вкладке «Фазы сборки» вашей цели. Обычно XCode делает это для вас, но иногда он теряет график, и вам нужно добавить файл .m вручную.
Сделать это:
TargetSettings -> Фазы сборки -> Исходники компиляции -> добавьте свой класс .m -> Построить и запустить
источник
-lLibraryName_$(PLATFORM_NAME)d
для отладки и добавить-lLibraryName_$(PLATFORM_NAME)
для выпускадля меня проблема оказалась отсутствием рамок. Как только я добавил их, это сработало.
источник
Отметьте только свойства Действительная архитектура и Активная архитектура.
источник
если вы используете cocoapods убедитесь , что параметры сборки вашей цели содержат $ (наследуется) в других флагов компоновщика раздела
источник
Ваш фреймворк скомпилирован для armv (x)? Мне кажется, что он скомпилирован для i386, который не будет работать на устройстве iOS. Или же он скомпилирован для armv (x), и вы пытаетесь запустить его на симуляторе, который является кодом i386. Убедитесь, что с помощью настроек сборки Akshay, показанных выше, ваш фреймворк правильно скомпилирован для чипа, на котором вы собираетесь его запускать.
источник
Если вы импортируете какой-то другой проект в xcode и если текущий и импортируемый проекты имеют одинаковые файлы в исходном коде компилятора, просто удалите один и тот же файл в текущем проекте в настройках «Build phase». Это сработало для меня.
источник
Да, это связано с тем, что сказал Аллен ... поищите TargetMembership в разделе Utilities исходного файла. есть флажок, который связывает этот файл с проектом. Проверка этого тоже решила эту проблему для меня.
источник
Также может случиться так, что вам не хватает ссылки на двоичную библиотеку, отметьте этапы сборки в ваших тарифах, добавьте необходимые библиотеки, а затем выберите «Продукт»> «Чистый продукт»> «Сборка».
Это тоже должно работать!
источник
У меня была эта проблема, когда я дважды открывал один и тот же проект, только один проект был оригиналом, а другой был клонирован из git url.
«Продукт»> «Чистый» решил проблему.
источник
Я также столкнулся с этой проблемой и исправил ее, проверив, содержит ли исходный файл компиляции и двоичный файл с библиотекой все необходимые мне файл / библиотека / фреймворк.
источник
Когда я столкнулся с той же проблемой, как это:
Оказалось, что я просто забыл добавить рамки. Это была QuartzCore.framework, если быть точным.
источник
попробуйте это последнее:
поэтому я попробовал все предложения на этой странице ... ни один из них не сработал .. Моя проблема началась с того, что я следовал инструкциям этого руководства, в которых рассказывается, как связывать статические библиотеки. С моим примером проекта инструкции работали нормально ... но затем на моем реальном проекте я начал получать ошибку выше.
Итак, что я сделал, так это прошел каждый шаг указанного урока и строил его после каждого шага ... ошибочная строка оказалась такой: добавление -all_load для создания настроек-> других флагов компоновщика
оказывается, что этот флаг рекомендовался когда-то давно для связи категорий со статическими библиотеками ... но потом оказалось, что этот флаг больше не нужен, Xcode 4.2+ .. (то же самое относится и к флагу -force_load .., который также был рекомендуется в других постах ) ..
источник
Когда я столкнулся с той же проблемой, я забыл добавить «скомпилированную версию библиотеки (с расширением .a)». Обычно мы добавляем библиотеку импортируемого проекта в Target Dependency на этапах сборки, но забываем добавить «скомпилированную библиотеку» в Link Binary с библиотеками на этапах сборки.
источник
Добавление того, что сработало для меня на случай, если другие столкнутся с такой же проблемой и окажутся здесь. У меня был старый проект, в котором для параметра CLANG_ENABLE_MODULES было установлено значение «Нет». После нескольких часов разочарований я сравнил рабочий проект и обнаружил, что для параметра «Включить модули» установлено значение «Нет» в настройках сборки LLVM. Установка этого параметра на «Да» решила мою проблему, и приложение работает нормально.
Настройки проекта -> Настройки сборки -> найти «Модули» и обновить модули активации (C и Objective-C) до YES.
источник
Я не добавил «-all_load -lstdc ++» в другие флаги компоновщика в настройке сборки, и я смог запустить сим без ошибок, но я не получил вывод журнала MonkeyTalk при запуске и предыдущий сценарий, который я написал, который использовался для подключения теперь показывал кнопку воспроизведения как отключенную. Вывод MT IDE показывался как «Соединение установлено с iOS Simulator», но не мог выбрать кнопку «Run / Play».
Первоначальный проект имел «ObjC -all_load» в других флагах компоновщика, и когда я добавил «-all_load -lstdc ++» вместе с ним, я получил сообщение об ошибке, о котором говорится в этом посте. Когда я удалил «ObjC -all_load» и добавил только «-all_load -lstdc ++», проект был построен, но по-прежнему не было выхода из разговора об обезьяне в качестве подтверждения в консоли.
источник
Возможно, вы используете библиотеку, которая скомпилирована только для реального оборудования. Например, если вы используете библиотеку Bluetooth, например Zephyr HxM Smart, она, вероятно, не будет компилироваться на симуляторе и предназначена только для работы на реальных устройствах.
источник
Столкнулся с аналогичной проблемой с IOS 6. Был в состоянии решить ее, добавив storekit.framework к «Связать двоичные файлы с библиотеками» в разделе фаз сборки.
Теперь это работает как шарм.
источник
У меня та же проблема с 7 ошибками, когда я добавляю PSTCollectionviewcontroller. Единственное решение этой проблемы - проверить ваши "xcode -> фазы сборки -> исходники компиляции", здесь добавьте все ваши ".m" файлы ... Я надеюсь, что это пост поможет пользователям в будущем.
источник
Что касается меня, я использовал Cocoapods для проекта дополненной реальности, и я обнаружил, что когда вы реализуете cocoapods и открываете .workspace вашего проекта, вы в конечном итоге получаете цель проекта Xcode, а цель Pod - то, что вы реализовали в одном файле. То, что происходило, было то, что некоторые из .m использовались обоими. После того, как я удалил дубликаты для цели XCode в Фазах сборки >> Компиляция источников, все заработало нормально.
источник
Я обнаружил это крайне вводящее в заблуждение сообщение при попытке перейти на новую библиотеку Google Analytics.
В моем случае проблема заключалась в ДВУХ КОНФЛИКТНЫХ КОПИЯХ библиотеки. Они были в разных папках, но обе они были указаны в путях сборки библиотеки моего приложения (в разделе «Настройки сборки»).
Перемещение всех устаревших библиотечных файлов из папки привело к выполнению хитрости и заставило загадочные сообщения об ошибках исчезнуть.
источник
Убедитесь, что все ресурсы вашего пакета скопированы на этапе сборки.
источник
Продукт => Чистый сделал свое дело для меня
источник
Изменения в активной архитектуре работали для меня, одна из моих библиотек использовала i386.
В настройках сборки >> измените Build Active Architecture Only на Yes с NO
Это сработало для меня. Надеюсь, что это помогает и другим.
источник
Ответ: вы просто перетаскиваете папку над проектом и нажимаете кнопку «Копировать».
источник
Я получил это сообщение, когда перетаскивал некоторые исходные файлы из другого проекта. Когда я удалил их, а затем добавил их через «Добавить файлы ...» из меню «Файл», он был построен без ошибок.
источник
У меня была похожая ошибка с NSManagedObject, и это было потому, что я использовал Базовые Данные, но пропускал Базовую платформу Данных в Фазах сборки - Соединение Двоичных с библиотеками, как некоторые другие ответили
источник
Вы можете получить этот тип ошибки, если добавите сторонние библиотеки в ваш проект, для которых требуются собственные фреймворки, не включенные в ваш проект.
Вам нужно заглянуть в файлы .h и .m недавно добавленной библиотеки и посмотреть, какие фреймворки ей требуются, а затем включить эти фреймворки в ваш проект (Цель> Фазы сборки> Связать двоичные файлы с библиотеками).
источник
Попробуйте удалить фреймворк, очистить проект, добавить его обратно и скомпилировать. Или удалите класс, который был добавлен xcode в исходный код компиляции, очистите проект, добавьте его обратно, затем соберите.
источник
Помните, что вы можете поместить макрос в любой контроллер представления, который вызывает файлы, которые вы уже удалили.
Приложение не будет отображать никаких ошибок до тех пор, пока вы не создадите свое приложение, оно выдаст ошибку на этапе компиляции в .o файлах.
Не забудьте удалить любой MACRO, который вызывает файлы, которые вы уже удалили.
Спасибо :)
источник
В дополнение к тому, что сделал Аллан, добавив отсутствующие классы, я последовал решению @ emdog4 и добавил библиотеку Core Data, перейдя в раздел «Фазы сборки в XCode» и в разделе «Связать двоичные файлы с библиотеками», нажав на + и выбрав «CoreData.framework». , В этом разобрался моя ошибка
источник