【问题标题】:libobjc.A.dylib compile error on iOS 4.3iOS 4.3 上的 libobjc.A.dylib 编译错误
【发布时间】:2011-11-13 13:58:40
【问题描述】:

我在 iOS Simulator 4.3 中遇到编译错误我实际上无法弄清楚,我得到的错误是:

dyld: lazy symbol binding failed: Symbol not found: _objc_retain
  Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib

dyld: Symbol not found: _objc_retain
  Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName
  Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib

注意:
被引用的库 (libobjc.A.dylib) 实际上位于“预期位置” 该代码在 iOS5 设备和 iOS5 模拟器上运行良好。

【问题讨论】:

  • 你在这个项目中使用 ARC 吗?你的问题可以是duplicate of this one?
  • 不使用ARC,项目太复杂,无法开启。
  • 这个符号不在 4.3 库中,我想知道是谁在请求这个。转到两个目录并执行nm libobjc.A.dylib | grep retain,在 4.3 中您只会看到一个符号 _SEL_retain。尝试清理项目并重建?
  • 升级到 XCode 5.4 和 IOS 6.0 后,我遇到了完全相同的问题。接受的答案对我不起作用。有人有其他想法吗?

标签: ios xcode


【解决方案1】:

在构建设置中添加-fobjc-arc => 不同配置的其他链接器标志 (OTHER_LDFLAGS)

【讨论】:

  • 这个力不是为整个项目启用 arc 吗?不启用弧线不是重点吗?
  • 不,它不会在整个项目中强制它。
  • 您将其用作 linker 标志,而不是 compiler 标志,因此它不会在编译时影响 ARC,仅在链接时.
  • 这行得通,但是如果项目只有几个文件需要这个标志,当我们可以为每个文件单独添加标志时,为什么我们需要在项目级别添加这个?
【解决方案2】:

如果您使用的库使用 ARC 并希望 在较旧的 iOS 4 设备上构建/运行。

在构建设置中 => 其他链接器标志

  • 添加-fobjc-arc
  • 如果还没有解决,则添加-weak_library /usr/lib/libobjc.A.dylib

【讨论】:

    最近更新 更多