ld:在iOS 4.3上复制符号_objc_retainedObject,但在iOS 5.0上没有

Sha*_*ali 12 xcode duplicate-symbol armv7 ios automatic-ref-counting


一些背景 - 我使用Diney的指南构建了一个自定义框架,网址http://db-in.com/blog/2011/07/universal-framework-iphone-ios-2-0/

它是为armv6/armv7构建的,它是一个基于ARC的框架,编译时的解复目标为4.3.

当我把结果框架放在一个5.0项目中时,它工作得很好,但当我把它放在一个4.3项目(ARC或非弧形,无所谓)时,我得到以下我无法理解的...

我也尝试手动添加libarclite.a,但它没有改变任何东西.

ld:/Users/freak4pc/Project/MyFramework.framework/MyFramework和/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/arc/libarclite_iphoneos.a(arclite.o)中的重复符号_objc_retainedObject,用于架构armv7 Command/Developer /Platforms/iPhoneOS.platform/Developer/usr/bin/clang失败,退出代码为1

非常感谢任何帮助.
谢谢
Shai

ste*_*ete 15

我正在努力解决同样的问题.解决方法是将框架的部署目标设置为iOS5(但检查是否不会产生其他问题).

然后,如果以iOS4为目标,则必须在主项目中使用ARC,否则将丢失libarclite.我的解决方案是提供两个框架,具体取决于它们是否使用ARC.

以下是Apple的开发论坛的两个链接,其中包含更多信息:https: //devforums.apple.com/message/539344#539344

https://devforums.apple.com/message/588316#588316

更新:有一个更好的方法.只需使用iOS5最小目标构建静态库,并手动添加/Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/arc/libarclite_iphoneos.a(和/Developer/usr/lib/arc/libarclite_iphonesimulator.a)项目没有使用ARC,需要iOS4支持.

更新2:实际上,只需使用链接器标志-fobjc-arc; 这将链接libarclite与库,如果它还没有在那里.最佳方案.