ios - ld : duplicate symbol _objc_retainedObject on iOS 4. 3 ,但不适用于 iOS 5.0

标签 ios xcode automatic-ref-counting armv7 duplicate-symbol


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

它是为 armv6/armv7 构建的,它是一个基于 ARC 的框架,使用 4.3 的 depolyment 目标编译。

当我将生成的框架放入 5.0 项目时效果很好,但是当我将它放入 4.3 项目(ARC 或非 arc,无关紧要)时,我得到以下我无法真正理解的内容.. .

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

ld: duplicate symbol _objc_retainedObject in /Users/freak4pc/Project/MyFramework.framework/MyFramework and /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/arc/libarclite_iphoneos.a(arclite.o) for architecture armv7 Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

在此方面提供任何帮助,我们将不胜感激。
谢谢
Shai

最佳答案

我遇到了同样的问题。解决方法是将框架的部署目标设置为 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 与库链接(如果它不在其中)。最佳解决方案。

关于ios - ld : duplicate symbol _objc_retainedObject on iOS 4. 3 ,但不适用于 iOS 5.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8375233/

相关文章:

ios - navigator.camera.getPicture 没有调用成功调用?

iOS 在协议(protocol)中使用未声明的标识符?

objective-c - 为什么 objc_super.receiver 在 ARC 中不可用?

ios - 在 iOS 的 C 函数中使用 ARC 取消引用指针

objective-c - ARC 是否消除了 Objective-C 中对属性的需求?

html - Flexbox 在带有 Safari 的 iPad 3 上无法正常工作

ios - iPhone 应用程序图标背景颜色更改

Xcode Quick Help 在查看单个文件时显示 "No Quick Help"

ios - http body 的值没有成员请求

ios - 如何在 TextField 上创建背景颜色从白色变为青色的淡入淡出动画?