6

我在我的项目中到处都在使用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的情况下解决这个问题(因为明天是这个项目的截止日期)。非常感谢大家!

4

6 回答 6

5

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

删除此标志后一切正常。

于 2013-08-15T09:38:00.133 回答
4

从 Resty 源中删除这些文件。

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

这将解决链接问题。

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

于 2012-08-30T15:29:12.280 回答
4

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

于 2013-02-15T19:55:19.370 回答
1

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

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

于 2012-10-09T05:22:14.613 回答
1

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

于 2013-06-12T17:49:36.593 回答
0

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

于 2014-07-23T09:01:21.343 回答