静态库(ARC)在非ARC应用程序上工作,遇到错误:dyld:惰性符号绑定失败:找不到符号:_objc_retainAutoreleasedReturnValue

时间:2012-06-15 07:35:35

标签: objective-c ios xcode

Xcode 4.3.2 我使用ARC编写了一个静态库。

当我把它放到一个项目中,并在iOS 4.3模拟器上测试。 (基于iOS 5.1,部署目标4.3)

如果项目使用ARC,它可以正常工作。

如果项目未使用ARC,则遇到错误,例如:

  

dyld:懒符号绑定失败:未找到符号:_objc_retainAutoreleasedReturnValue     参考自:/ Users / cnzzmobile / Library / Application Support / iPhone Simulator / 4.3.2 / Applications / A4EEB0A0-AC16-402C-B426-46667225F66D / test.app / test     预期在:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

     

dyld:未找到符号:_objc_retainAutoreleasedReturnValue     参考自:/ Users / cnzzmobile / Library / Application Support / iPhone Simulator / 4.3.2 / Applications / A4EEB0A0-AC16-402C-B426-46667225F66D / test.app / test     预期在:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/System/Library/Frameworks/Foundation.framework/Foundation

我搜索了很多,但找不到答案可以解决这个问题。

我删除了仅受iOS5支持的jsonobjcet,-fobjc-arc也不起作用。

由于

2 个答案:

答案 0 :(得分:1)

我找到了添加" -fobjc-arc"在"其他链接器标志"可以在基于iOS 5.1的Xcode 4.3.2上解决这个问题。因为xcode无法找到支持ARC链接的lib。

请注意:添加" -fobjc-arc"在"其他链接器标志"不在"编译来源"。

但是这仍然不适用于基于iOS 4.3的旧版Xcode 4(雪豹)。

我发现一些lib可以在ARC和非ARC项目上工作而不添加任何特殊设置。我还在等待答案如何做到这一点。使用纯C?

编写代码

答案 1 :(得分:0)

_objc_retainAutoreleasedReturnValue是iOS 5.x版弧的功能。您正在尝试构建此框架并在iOS 4.3上运行它,这需要您为运行“ArcLite”框架的iOS 4.x指定和部署它。