【问题标题】:iOS - 2 duplicate symbols for architecture armv7iOS - 架构 armv7 的 2 个重复符号
【发布时间】:2012-08-30 15:20:02
【问题描述】:

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

【问题讨论】:

  • 为了他人的利益:删除一些我不再需要的类后,我遇到了这个错误。在能够再次成功编译之前,我必须进行清理。

标签: iphone ios restkit


【解决方案1】:

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

删除此标志后一切正常。

【讨论】:

    【解决方案2】:

    从 Resty 源中删除这些文件。

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

    这将解决链接问题。

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

    【讨论】:

      【解决方案3】:

      我也遇到了同样的错误。通常,由于项目文件夹中的类和 xib 重复,会发生这种错误。例如,在我的项目中,我有两次这些课程ServiceRequest.h/.m。摆脱重复的,你就可以开始了。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2015-11-02
              • 2013-05-01
              • 2012-11-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-02-12
              相关资源
              最近更新 更多