iOS应用程序不会在设备上编译,但在模拟器中工作正常

时间:2012-10-04 21:34:12

标签: ios xcode ios5 ios6 xcode4.5

我认为这与链接有关,但我已经删除了RestKit并重新添加了它。我确保所有的连接和链接都已到位。如果我设置XCode使用模拟器它运行正常,但一旦我将其设置为在任何设备上运行它甚至不会构建。唯一值得注意的是,在我升级到XCode 4.5之前,这并没有开始。以下是它给我的错误

ld: warning: ignoring file /Users/luke/Library/Developer/Xcode/DerivedData/ehrx-btsujlxuhtytahfaikwjeqfjybtt/Build/Products/Debug-iphoneos/libRestKit.a, file was built for archive which is not the architecture being linked (armv7s): /Users/luke/Library/Developer/Xcode/DerivedData/ehrx-btsujlxuhtytahfaikwjeqfjybtt/Build/Products/Debug-iphoneos/libRestKit.a
Undefined symbols for architecture armv7s:
  "_OBJC_CLASS_$_RKClient", referenced from:
      objc-class-ref in ehrxAppDelegate.o
      objc-class-ref in ehrxLoginView.o
      objc-class-ref in ehrxInboxView.o
      objc-class-ref in ehrxCMView.o
      objc-class-ref in ehrxEncounterDemoView.o
      objc-class-ref in ehrxEncounterDiagListView.o
      objc-class-ref in ehrxEncounterChargeView.o
      ...
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

这些是RestKit的构建设置。 enter image description here

3 个答案:

答案 0 :(得分:6)

看起来这些框架不是为了在armv7s设备上运行而构建的,如果没有必要,可以从Build Settings中的“Valid Architectures”中删除它。

如果没有,您将不得不更新它们以使用armv7s

答案 1 :(得分:3)

链接器抱怨您的RestKit库中的armv7缺少数据。

请在RestKit项目中添加此架构作为有效的架构。这显然比从主项目中删除armv7要好得多,原因很明显。

答案 2 :(得分:2)

这是因为您的库RestKit仅针对架构armv7而不是针对新的iPhone架构armv7s进行编译。 如果您没有为armv7s编译lib,请尝试将armv7s删除到项目设置中的体系结构和有效体系结构列表中。