【问题标题】:6 duplicate symbols for architecture i386架构 i386 的 6 个重复符号
【发布时间】:2013-03-09 09:25:05
【问题描述】:
duplicate symbol _OBJC_METACLASS_$_SBJsonParser in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonParser.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonParser.o)
duplicate symbol _OBJC_CLASS_$_SBJsonParser in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonParser.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonParser.o)
duplicate symbol _OBJC_IVAR_$_SBJsonWriter.sortKeys in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_IVAR_$_SBJsonWriter.humanReadable in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_METACLASS_$_SBJsonWriter in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
duplicate symbol _OBJC_CLASS_$_SBJsonWriter in:
    /Users/Gaditek/Library/Developer/Xcode/DerivedData/DietBet-gyhoyhmdrobtqregldjyixtgmize/Build/Intermediates/DietBet.build/Debug-iphonesimulator/DietBet.build/Objects-normal/i386/SBJsonWriter.o
    /Users/Gaditek/Desktop/AliMaisamProjects/Dietbet/DietBet/libfacebook_ios_sdk.a(SBJsonWriter.o)
ld: 6 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

请告诉我如何解决这个问题?

【问题讨论】:

  • 您是否为项目中的控件或变量指定了相同的名称?如果没有,则删除您的派生数据。然后清理并构建您的项目。

标签: iphone ios objective-c compiler-errors sbjson


【解决方案1】:

如果以上都不能解决您的问题,请检查您是否在两个不同的文件中声明了一个常量(我的意思是检查您是否有两个相同的(.h &.m)文件。重复文件不应该存在于您的项目中.

【讨论】:

    【解决方案2】:

    如果您将任何 .h 文件导入两次,就会发生这种情况。

    例如 如果您同时导入任何 .h 文件 ....ViewController.h 和 ....ViewController.m 文件,就会发生这种情况。

    【讨论】:

      【解决方案3】:

      我已经解决了问题,请按照步骤操作。

      1. 转到应用程序的目标
      2. 编译源代码
      3. 使用 (-) 删除重复文件。

      【讨论】:

      • 这是我的问题!不知道为什么,但是从应用程序目标的构建阶段的编译源中删除文件解决了这个问题。
      【解决方案4】:

      您还可以:

      1. 复制.h冲突文件pods
      2. podfile 中删除这些冲突pods
      3. 将这些.h 文件复制到项目中。
      4. 将复制的.h 文件的#import </.h> 重命名为".h"
      5. 制作pod install 和bulid。

      诀窍是您的代码没有错误,因为导入了 .h 文件,但 .o 文件链接正确。

      【讨论】:

        【解决方案5】:

        问题很可能是由于包含标题时的拼写错误。检查以确保包含头文件 (.h) 而不是实现文件 (.m)。

        这是我的问题

        【讨论】:

        • 感谢您的建议。
        【解决方案6】:

        如果没有其他方法,通常有帮助的方法是使用文本编辑器打开您的 .pbxcodeproj 文件,然后使用 grep 查找 Xcode 中失败日志中出现的类的名称。可能有两条重复的行 - 删除其中一条。

        【讨论】:

          【解决方案7】:

          如您所见,链接器抱怨 SBJsonWriterSBJsonParser 都在 libfacebook_ios_sdk.a 中定义,并作为您项目中的单独文件。

          除了从目标中删除单个文件之外,您无法真正解决问题。

          问题在于 libfacebook_ios_sdk.a 的开发人员认为使用 json 框架是一个好主意(不关心与主机应用程序中使用的代码发生冲突)。这是 iOS 上 SDK 的常见问题。

          【讨论】:

          • 但是我在我的项目中使用了 SBJsonWriter 和 SBJsonParser。
          • @AliMaisam 我理解你的冲突,但没有合适的解决方案。您可以重命名 SBJsonParser 和 SBJsonWriter 类以避免冲突。
          • 很抱歉,但我没有得到 100% 的您想要解释的内容。请您再解释一下好吗?
          • @NikolaiRuhe。谢了哥们。这真的很有帮助
          • @rohan-patel。我刚刚从我的项目中删除了 SBJsonParser 和 SBJSonWriter,并在需要的地方使用了 Facebook SDK 的 JSON.h 文件。当我删除这两个文件时,SBJsonParser 发出错误: [SBJsonParser objectWithString:error:]: unrecognized selector sent to instance 为了解决这个问题,我使用了 [SBJsonParser objectWithString:]
          【解决方案8】:

          似乎您可能两次包含某些 .h/.m 文件,例如包含两次第三方 API/库,或者您创建了一些名称与项目中已有文件完全相同的新文件。检查您的项目文件夹中是否有任何重复的文件。

          【讨论】:

            【解决方案9】:

            您必须在项目中添加了两次 SBJsonParser.h/.m。

            【讨论】:

            • 谁在没有提供理由的情况下否决了这个答案?这是所提问题的可能解决方案之一。
            • Stackoverflow 应该无缘无故地考虑你不能投反对票,人们非常不愿意仅仅为了它而对任何答案投反对票。但他们不欣赏好的答案。
            • 答案是可能的。没有该死的理由拒绝它。
            猜你喜欢
            • 2012-08-30
            • 1970-01-01
            • 2011-09-30
            • 2012-10-07
            • 2014-05-31
            • 1970-01-01
            • 1970-01-01
            • 2012-12-29
            • 2011-08-14
            相关资源
            最近更新 更多