Подтвердить что ты не робот

Undefined символы для архитектуры 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: Я проверил рамки и все они существуют.

4b9b3361

Ответ 1

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

Я просто скопировал кучу файлов в проект Xcode, если вы забыли добавить их в свои проекты. Постройте фазы, вы получите сообщение об ошибке "Undefined для архитектуры i386". Поэтому добавьте свои файлы реализации в файлы компиляции и файлы Xib для копирования ресурсов Bundle.

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

Ответ 2

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

QuartzCore.framework

Для ошибки

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

Ответ 3

С риском кажущегося очевидного всегда проверяйте правописание ваших файлов в прямом классе. Иногда 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, ошибки исчезли.

Ответ 4

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

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

НАСЛАДИТЕСЬ