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

时间:2012-08-30 15:20:03

标签: iphone ios restkit

我在我的项目中到处使用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(因为明天是这个项目的截止日期)。非常感谢你们!

6 个答案:

答案 0 :(得分:4)

从Resty源删除这些文件。

  

LRResty /类别/类别/ NSData的+ Base64.h   LRResty /类别/类别/ NSData的+ Base64.m

这将解决链接问题。

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

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

删除此标志后一切正常。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

导入包含与项目中名称完全相同的类的框架时,就会发生这种情况。