23

可能重复:
未找到架构 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:我检查了框架,它们都存在。

4

4 回答 4

24

聚会有点晚了,但对有这个错误的人可能很有价值..

我只是直接将一堆文件复制到 Xcode 项目中,如果您忘记将它们添加到您的项目构建阶段,您将收到错误“架构 i386 的未定义符号”。因此,将您的实现文件添加到 Compile Sources,并将 Xib 文件添加到 Copy Bundle Resources。

错误告诉我,我的课程没有链接,仅仅是因为它们没有包含在编译源中,这确实很明显,但可能会让一些人头疼。

于 2012-08-14T21:17:45.203 回答
21

在 Build Phases 的“Link Binaries With Libraries”列表中添加项目目标中使用的方法所需的框架,它将很容易工作。就像我已经导入到我的项目中一样

QuartzCore.framework

对于错误

架构 i386 的未定义符号:

于 2012-02-13T13:15:59.207 回答
2

冒着听起来很明显的风险,请始终检查前向类文件的拼写。有时 XCode(至少 XCode 4.3.2)会将声明变为绿色,实际上是错误的驼峰式大小写。就像在这个例子中一样:

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

如果 RadioKit 是一个类文件,并且您将它设置为另一个文件的属性,那么在接口声明中,您可能会看到

Radiokit *rk;

当实际声明应该是:

RadioKit *rk;

这个错误也会抛出这种类型的错误。另一个例子(在我的例子中)是当你的通用应用程序的类名上有 _iPhone 和 _iphone 扩展时。一旦我将适当的文件从 _iphone 更改为正确的 _iPhone,错误就消失了。

于 2012-05-02T20:10:56.570 回答
-5

好吧,我为想要使用 xCode 4 的人找到了解决此问题的方法。您所要做的就是从 SimulatorSDK 文件夹 /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System导入框架/库/框架

我不知道当您尝试在真正的 iDevice 上测试您的应用程序时它是否有效,但我确信它可以在模拟器上运行。

请享用

于 2011-07-21T08:12:34.647 回答