Неопределенные символы для архитектуры i386 [дубликаты]

Возможный дубликат:
символы не найдены для архитектура i386

Мне нужно завершить приложение, и когда я начинаю пытаться понять, что сделал предыдущий разработчик (я думаю, это было сделано с помощью Xcode 3), запустив симулятор, Xcode 4 показывает мне 25 проблем:

    Ld build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer normal i386
    cd /Users/haithembenhammouda/Desktop/SonVidéo
    setenv MACOSX_DEPLOYMENT_TARGET 10.6
    setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk -L/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -L/Users/haithembenhammouda/Desktop/SonVidéo/Classes/RadioKitLib -L/Users/haithembenhammouda/Desktop/SonVidéo -F/Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator -filelist /Users/haithembenhammouda/Desktop/SonVidéo/build/SonVidéo.build/Debug-iphonesimulator/RadioPlayer.build/Objects-normal/i386/RadioPlayer.LinkFileList -mmacosx-version-min=10.6 -ObjC -Xlinker -objc_abi_version -Xlinker 2 -framework Foundation -framework UIKit -framework CoreGraphics -framework SystemConfiguration -framework MediaPlayer -framework CFNetwork -framework AudioToolbox -framework QuartzCore -lsqlite3.0 -framework AVFoundation -lRadioKit -framework MessageUI -o /Users/haithembenhammouda/Desktop/SonVidéo/build/Debug-iphonesimulator/RadioPlayer.app/RadioPlayer
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_RadioKit", referenced from:
      objc-class-ref in RadioPlayerViewController.o
  ".objc_class_name_UIColor", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(BufferView.o)
  ".objc_class_name_UIView", referenced from:
      .objc_class_name_BufferView in libRadioKit.a(BufferView.o)
  ".objc_class_name_NSObject", referenced from:
      .objc_class_name_ASE_Event in libRadioKit.a(ASE_Event.o)
      .objc_class_name_AudioStreamEngine in libRadioKit.a(AudioStreamEngine.o)
      .objc_class_name_RadioKit in libRadioKit.a(RadioKit.o)
      .objc_class_name_XMLMetaParser in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSDate", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSValue", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSScanner", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSCharacterSet", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSAutoreleasePool", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(reachability.o)
  ".objc_class_name_NSFileManager", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  ".objc_class_name_NSURLConnection", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
      pointer-to-literal-objc-class-name in libRadioKit.a(XMLMetaParser.o)
  ".objc_class_name_NSThread", referenced from:
      pointer-to-literal-objc-class-name in libRadioKit.a(AudioStreamEngine.o)
  .....(etc)
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

PS: Я проверил фреймворки, и все они существуют.


person highthem    schedule 07.07.2011    source источник


Ответы (4)


Немного поздно для вечеринки, но может быть полезно для кого-то с этой ошибкой.

Я просто скопировал кучу файлов в проект Xcode, если вы забудете добавить их в свои проекты Build Phases, вы получите сообщение об ошибке «Неопределенные символы для архитектуры i386». Поэтому добавьте свои файлы реализации в Источники компиляции, а файлы Xib в Ресурсы пакета копирования.

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

person StuR    schedule 14.08.2012
comment
Что делать, если у меня нет файла .m, у меня есть только файл .a! - person Sam YC; 10.06.2013
comment
спасибо очень хороший совет. - person Mahmud Ahsan; 26.03.2014
comment
Удивительно ... Я застрял в Apple Mach Link Error на 2 дня. Мэнн.. ты только что спас меня :-) Спасибо - person Abdul Rehman; 24.04.2014
comment
Спустя 3 года мне помог этот пост. ух ты :) - person ; 20.01.2015

Добавьте структуру, необходимую для метода, используемого в цели проекта, в списке «Связать двоичные файлы с библиотеками» на этапах сборки, это будет легко работать. Как я импортировал в свой проект

QuartzCore.framework

Для ошибки

Неопределенные символы для архитектуры i386:

person Rajesh    schedule 13.02.2012

Рискуя показаться очевидным, всегда проверяйте орфографию в ваших файлах прямого класса. Иногда XCode (по крайней мере, XCode 4.3.2) превращает декларацию в зеленый цвет, который на самом деле неправильно написан. Как в этом примере:

"_OBJC_CLASS_$_RadioKit", referenced from:
  objc-class-ref in RadioPlayerViewController.o

Если бы RadioKit был файлом класса и вы сделали его свойством другого файла, в объявлении интерфейса вы могли бы увидеть, что

Radiokit *rk;

имеет «Radiokit» зеленым цветом, когда фактическая декаляция должна быть:

RadioKit *rk;

Эта ошибка также вызовет этот тип ошибки. Другой пример (в моем случае) — это когда у вас есть расширения _iPhone и _iphone в именах классов для универсальных приложений. Как только я изменил соответствующий файл с _iphone на правильный _iPhone, ошибки исчезли.

person whyoz    schedule 02.05.2012

ну, я нашел решение этой проблемы для тех, кто хочет работать с xCode 4. Все, что вам нужно сделать, это импортировать фреймворки из папки SimulatorSDK /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3. SDK/система/библиотека/фреймворки

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

НАСЛАЖДАТЬСЯ

person highthem    schedule 21.07.2011
comment
Что это..? Это никогда не сработает. - person Gajendra K Chauhan; 17.05.2012