外部框架中的重复符号

时间:2014-04-25 20:07:59

标签: ios objective-c frameworks cocoapods

在我的iOS XCode项目中,我使用的是来自第三方的外部非开源库。 现在我想通过cocoapods将AFNetworking添加到我的项目中。 当我这样做时,我得到了多个像这样的错误:

duplicate symbol _OBJC_METACLASS_$_AFImageCache in:
    /Path/to/framework(UIImageView+AFNetworking.o)
    /Path/to/DerivedData/Build/Products/Debug-iphonesimulator/libPods.a(UIImageView+AFNetworking.o)

63 duplicate symbols for architecture i386

它认为图书馆也在使用AFNetworking,因此阻止我使用它。有没有办法解决这个问题(除了不使用其他框架,这不是一个选项)?


修改

我设法通过执行与this类似的操作从其他框架中删除AFNetworking。但现在框架没有从cocoapods找到AFNetworking,我得到了Undefined symbols for architecture i386

有没有办法告诉框架在哪里可以找到AFNetworking?

1 个答案:

答案 0 :(得分:2)

您无法从同一项目中的两个不同位置加载相同的库。这是Objective-C的限制,而不是CocoaPods。请阅读this answer了解详情。

主要是解决此问题,您只能在一个地方包含AFNetworking。将您的其他依赖项移动到CocoaPods可以帮助您这样做,假设链接答案中讨论的版本中没有冲突。