iOS – 2个用于架构armv7的重复符号

我在我的项目中到处使用Resty ,但是现在因为我必须将图像上传到服务器,所以我尝试添加另一个名为RestKit的框架来处理文件上传。 但是当我编译时,它有错误:

duplicate symbol _NewBase64Decode in: /Users/iforests/Library/Developer/Xcode/DerivedData/Owlch-gnysrakcbhsgkubbjjjfbahlocqi/Build/Products/Debug-iphoneos/libRestKit.a(NSData+Base64.o) /Users/iforests/Documents/iOSworkspace/Owlch/LRResty.framework/LRResty(NSData+Base64.o) ld: 2 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

有没有办法解决这个问题而不删除LRResty(因为明天是这个项目的截止日期)。 非常感谢你们!

从Resty源删除这些文件。

LRResty / Classes / Categories / NSData + Base64.h LRResty / Classes / Categories / NSData + Base64.m

这将解决链接问题。

如果因此停止工作,请在Resty代码中重命名NSData + Base64的文件和类别,然后在Resty代码导入“NSData + Base64.h”的任何位置,将导入更改为重命名类别的任何内容

我也想出了同样的错误。 通常,由于项目文件夹中的重复类和xib,会发生此类错误。 例如,在我的项目中,我有两次这样的类ServiceRequest.h/.m 。 摆脱重复的,你很高兴。

在将新库导入现有(旧)项目时遇到此问题 – 结果问题是Xcode中的“ 构建设置 – 链接 – 其他链接器标志 ”中仍然设置的链接器标志-all_load (无论出于何种原因) 。

删除此标志后一切顺利。

问题是两个库都定义了相同的方法:NewBase64Decode。

因此,您可以修改任何一个库的源代码,并将方法名称更改为“RKNewBase64Decode”之类的其他名称。 记得在调用NewBase64Decode方法的地方对* .m文件进行更改!

另外,我已经注意到,如果你愚蠢地导入.m,请删除导入。

在导入包含与项目中具有完全相同名称的类的框架时,我发生了这种情况。