【问题标题】:iOS app won't compile on device but works fine in simulatoriOS 应用程序无法在设备上编译,但在模拟器中运行良好
【发布时间】:2012-10-04 21:34:12
【问题描述】:

我假设这与链接有关,但我已经删除了 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 的构建设置。

【问题讨论】:

  • 当您使用-v 查看调用时它说了什么?
  • 我不确定在这种情况下如何使用 -v。

标签: ios xcode ios5 ios6 xcode4.5


【解决方案1】:

看起来这些框架不是为在 armv7s 设备上工作而构建的,如果没有必要,请将其从构建设置中的“有效架构”中删除。

如果没有,您必须更新它们才能在 armv7s 上工作

【讨论】:

  • 真的!曾经遇到过同样的问题,只是更改了 armv 设置等瞧!
  • 我添加了我的构建设置的照片,你看到它们有什么问题吗?对我来说,它们看起来设置正确。
  • 就是这样,我没有看到最后的s。
【解决方案2】:

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

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

【讨论】:

  • 我添加了一张显示构建设置的照片,据我所知,它已经以这种方式设置了。除非我不明白。
  • 你的主项目看起来一样吗?不要忘记进行干净的构建,即确保您的应用获取最新的库二进制文件。
【解决方案3】:

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

【讨论】:

  • 我添加了我的构建设置的照片,它看起来对我来说是正确的。不知道我应该改变什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多