2011-11-13 48 views
6

我在iOS中有编译错误模拟器4.3我不能真正弄明白,我得到的错误是:libobjc.A.dylib编译iOS上的错误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模拟器中正常工作。

+0

你在这个项目中使用ARC补充的吗?你的问题可能是[这个副本?](http://stackoverflow.com/questions/7423489/objective-c-arc-errors-automatic-release-problems) –

+0

不使用ARC,该项目太复杂打开它。 – oberbaum

+0

这个符号不在4.3 lib中,我不知道谁在请求这个。转到两个目录并执行'nm libobjc.A.dylib | grep retain',在4.3中你只会看到一个符号_SEL_retain。试图清理项目和重建? –

回答

28

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

+1

是不是这个强制为整个项目启用弧?是不是要启用弧的点? – stigi

+1

不,它并不会强迫整个项目。 – mackross

+4

您将它用作**链接器**标志,而不是**编译器**标志,因此它不会在编译时影响ARC,仅在链接时发生。 – 0xced

1

如果您使用使用ARC库,并希望 编译/在旧的iOS上运行出现此问题4个设备。

在Build设置=>其它链接器标记

  • 添加-fobjc-arc
  • 如果尚未解决,那么-weak_library /usr/lib/libobjc.A.dylib