Apple Mach-O Linker ошибки, и я не знаю, что делать - PullRequest
26 голосов
/ 03 января 2012

Я больше не могу скомпилировать свой проект для устройства или симулятора.Я получаю 13 ошибок Apple Mach-O-Linker.Все началось после неудачной попытки использовать sharekit.Вот журнал с ошибкой:

ld: warning: directory not found for option '-F/Users/bbrandy95/Documents/Broken Brandsonic Web Projects/Brandsonic Web mobile/../../Downloads/0.2.1gm1/iphoneos4.0/System/Library/Frameworks'
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_NSURLRequest", referenced from:
      objc-class-ref in Brandsonic_Web_mobileAppDelegate.o
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSAutoreleasePool", referenced from:
      objc-class-ref in main.o
  "_objc_msgSendSuper2", referenced from:
      -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileViewController didReceiveMemoryWarning] in Brandsonic_Web_mobileViewController.o
      -[Brandsonic_Web_mobileViewController dealloc] in Brandsonic_Web_mobileViewController.o
  "_objc_setProperty", referenced from:
      -[Brandsonic_Web_mobileAppDelegate setWindow:] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate setViewController:] in Brandsonic_Web_mobileAppDelegate.o
  "__objc_empty_vtable", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
      _OBJC_CLASS_$_SecondView in SecondView.o
  "_objc_msgSend", referenced from:
      _main in main.o
      -[Brandsonic_Web_mobileAppDelegate application:didFinishLaunchingWithOptions:] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate dealloc] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate GOOGLE] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate YOUTUBE] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileAppDelegate WIKI] in Brandsonic_Web_mobileAppDelegate.o
      -[Brandsonic_Web_mobileViewController webView:shouldStartLoadWithRequest:navigationType:] in Brandsonic_Web_mobileViewController.o
      ...
  "__objc_empty_cache", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_CLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
      _OBJC_CLASS_$_SecondView in SecondView.o
  "_OBJC_CLASS_$_NSObject", referenced from:
      _OBJC_CLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
  "___CFConstantStringClassReference", referenced from:
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileAppDelegate.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      CFString in Brandsonic_Web_mobileViewController.o
      ...
  "_OBJC_CLASS_$_NSKeyedUnarchiver", referenced from:
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSUserDefaults", referenced from:
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_CLASS_$_NSURL", referenced from:
      objc-class-ref in Brandsonic_Web_mobileAppDelegate.o
      objc-class-ref in Brandsonic_Web_mobileViewController.o
  "_OBJC_METACLASS_$_NSObject", referenced from:
      _OBJC_METACLASS_$_Brandsonic_Web_mobileAppDelegate in Brandsonic_Web_mobileAppDelegate.o
      _OBJC_METACLASS_$_Brandsonic_Web_mobileViewController in Brandsonic_Web_mobileViewController.o
      _OBJC_METACLASS_$_SecondView in SecondView.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
'

Как это исправить?Пожалуйста, помогите.

Ответы [ 12 ]

49 голосов
/ 30 мая 2012

Для каждого с похожей ошибкой.Если это произойдет, вы обычно можете удалить «Путь» в разделе Точка

target-> Настройки сборки-> Пути поиска в библиотеке enter image description here

18 голосов
/ 16 сентября 2014

Эта ошибка может возникать, если инфраструктура добавляется в проект более одного раза.

  • Вы можете исправить это, удалив дубликат. Чтобы найти его, выберите фреймворк в навигаторе проекта Xcode и выберите Показать в Finder . Затем очистите и постройте свой проект.

Это также может быть вызвано тем, что вам не хватает файлов заголовков фреймворка или ссылки на них.

  • В этом случае вам следует попытаться удалить SDK или фреймворк и добавить его снова.

Удачи.

5 голосов
/ 04 декабря 2016

Если вы установили зависимости с помощью CocoaPods, обязательно откройте проект XCode, щелкнув файл .xcworkspace, а не файл .xcodeproj.

2 голосов
/ 03 января 2012

Возможно, файл проекта как-то поврежден.

Самый верный способ исправить это - создать новый проект и переместить ваши файлы и старый info.plist поверх него.

Следующий наиболее вероятный способ исправить это - создать новую цель в вашем текущем проекте и посмотреть, скомпилируется ли она (если у вас есть какие-либо специальные флаги из старой цели, вы захотите их скопировать). *

Также вы можете попробовать компилировать для Release против Build, и если один из них работает, посмотрите на все опции компилятора и посмотрите, что отличается.

Если вы добавили путь поиска заголовка для Sharekit, возможно, попробуйте очистить весь путь поиска заголовка и посмотреть, исправит ли это что-то. Также убедитесь, что ваш проект все еще включает в себя фреймворки, которые включает в себя новый проект (UIKit и NSFoundation, возможно, другие).

1 голос
/ 15 октября 2014

Добавьте файл .m для компиляции исходной страницы.

шаги: -

  1. щелкнув проект в меню навигации
  2. выберите цель
  3. выберите этапы сборки
  4. Нажмите кнопку + и добавьте файл в исходники компиляции.

Надеюсь, что кто-нибудь поможет с этой проблемой

0 голосов
/ 24 августа 2017

Я столкнулся с этой проблемой с моим самостоятельно разработанным cocoapod.

Ошибка была: Apple Mach-O Linker errror

Оказалось, что я определил протокол и реализовал расширение протокола.Один из методов расширения протокола был общедоступным, а сам протокол - нет.И это вызвало ошибку Apple Mach-O Linker.

Пример:

протокол MyProtocol {var field: String {get}}

расширение MyProtocol { public func giveMeSomething () -> String}

открытый класс MyClass: MyProtocol {}

В описании ошибки упоминается MyClass, на который ссылается MyProtocol -> MyProtocol, на который ссылаются на giveMeSomething () ...

Итак, решение состояло в том, чтобы сделать Myprotocol также public

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

0 голосов
/ 24 июля 2017

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

Я просто установил параметр сборки -> Enable Bitcode на NO

0 голосов
/ 05 июня 2017

Это потому, что проект вставил файл основных данных xcdatamodeld в исходники компиляции.Выберите ваш проект -> Build Phases -> Compile Sources и удалите файл projectName.xcdatamodeld.А также проверьте, импортировали ли вы файл .m вместо .h, он также выдает ту же ошибку компоновщика.Проверьте все #import коды.И проверьте, добавили ли вы работу с основными данными в библиотеку и импортировали файл основных данных .h.Проверьте создание NSManagedObject и импортируйте его файл.Просто попробуйте и ответьте мне, если все еще ошибка.

0 голосов
/ 08 января 2014

У меня была эта проблема, теперь, исходя из моих обстоятельств, я выбрал более новую версию iOS, поскольку цель развертывания исправила это для меня. Мой проект был настроен на развертывание на iOS 5 по умолчанию, и изменение его на 7 (самое последнее) дало результат.

Для любого новичка в разработке iOS это можно сделать, щелкнув файл проекта XCode в навигаторе> информация о развертывании> цель развертывания и выбрав соответствующую версию в раскрывающемся меню.

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

0 голосов
/ 24 июня 2013

В некоторых случаях путь поиска в вашей библиотеке пуст. Поскольку существует много ошибок компоновщика Apple-mac-o.

Смотрите мой ответ также на.

Ошибка компоновщика Apple Mach-O при использовании классов базовых данных в OCUnit

...