【问题标题】:Mach-O Linker Error on Xcode 4.6Xcode 4.6 上的 Mach-O 链接器错误
【发布时间】:2013-02-06 02:10:31
【问题描述】:

我在 Xcode 4.6 上有一个 iOS 应用程序,当我最近尝试在 iPhone 6.1 模拟器中构建和运行时,我遇到了“Mach-O 链接器错误”。它继续说:

ld:架构 i386 的 17 个重复符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

有人知道怎么解决吗?

非常感谢!

【问题讨论】:

  • 嗨 flexaddicted,我很抱歉,但我很困惑哪个是该链接中的解决方案。我查看了关于导入语句错误的第一个解决方案,我检查了一下,没有任何问题。还有什么我应该看的吗?谢谢。
  • 您可能在头文件中的某个地方定义了一些变量,这些变量被包含了几次。您能给我们提供有关重复符号的更多信息吗?
  • 请见谅,因为我不太擅长代码(我使用buzztouch.com 创建了这个应用程序)。我搜索了“architecture i386”并在一个 sample.js 文件中找到它,其中显示““警告:没有规则来处理适用于架构 i386 的 sourcecode.javascript 类型的文件 '$(PROJECT_DIR)/sample.js'”“这就是唯一的地方。如果您需要其他任何东西,请告诉我。非常感谢。
  • 检查是否在项目中添加了两次相同的文件。

标签: ios xcode xcode4.6


【解决方案1】:

只需转到“构建阶段”->“编译源”并查找类的重复项。

【讨论】:

  • 您好 edzio27,我去了“编译源”部分,找不到任何重复的类。那里肯定是重复的课程吗,因为我检查了几次,但找不到任何东西。非常感谢。
【解决方案2】:

检查您的#import 中是否有“*.m”文件!看来是我的错……

【讨论】:

    【解决方案3】:
    1. 退出 Xcode
    2. 重启系统
    3. 选择 Xcode -> 首选项 -> 位置
    4. 在位置中,您将看到“派生数据”。点击路径旁边的箭头图标。
    5. 这将打开一个包含“派生数据”的文件夹,将其删除。
    6. 清洁产品并运行

      如果还是不行的话

      构建设置 > 启用位码 > 否

    【讨论】:

      【解决方案4】:

      在我的例子中,我声明了

      extern NSString const *keyString
      

      在两个不同的文件中。我重命名了其中一个,它解决了我的问题。

      【讨论】:

        【解决方案5】:

        在我的例子中,它是常量。

        NSString *const cellID = @"cellID";
        

        这一行写在两个 .m 文件中。在开始时附加 static 关键字后,问题已解决。

        这个问题也可以在新项目中重新创建。您会认为在不同的 .m 文件中定义常量不会产生任何影响,因为它们是私有的。但我不知道编译器如何处理幕后的东西。最重要的是,当您从问题导航器中点击问题时,它不会像处理任何其他问题那样在编辑器中打开页面。真是令人沮丧。

        【讨论】:

          【解决方案6】:

          我不确定我能否给你一个解决方案,但我会分享一个答案,因为我在 xCode 4.6 上也发生了同样的事情。我添加了一个 C 类头文件和实现文件,并将它们包含在 main.c 文件中。然后我决定删除那个新的 C 类头文件和实现。当我最终再次添加一个具有相同名称和函数调用的新 c 类/头文件时,我得到了您的错误。

          坦率地说,这可能是一个错误。我修复它的唯一且最快的方法是开始一个新项目并将所有课程拉入。

          【讨论】:

          • 您通常应该能够删除 finder 甚至 Projekt Navigator 中的文件,然后重新创建一个新类。
          【解决方案7】:

          确保在多个类中没有同名的非即时方法(例如,如果我有两个非常相似的视图控制器以便快速移动,我将代码从一个视图控制器复制并粘贴到第二个并且它们都有称为相同事物的方法,例如: NSMutableString *filteredStringFromStringWithFilter(NSString *string, NSString *filter)) 然后应用程序会混淆使用哪些方法,因为它们都可用,在第二个类上重命名它并更改任何在该类上调用该方法,您就消除了混淆。难道我们都不想让事情变得更清楚吗!

          【讨论】:

            【解决方案8】:

            如果您想同时更改两个不同类中的值。请记住使用静态关键字进行标记。

            否则clang会在下面抛出这样的错误,没有任何值解释。

            Apple Mach-O 链接器错误 clang:错误:链接器命令失败,退出代码 1

            【讨论】:

              【解决方案9】:

              当你重构一个类函数时,你有时也会得到这个错误。只需转到产品-> 清理并重建。

              【讨论】:

                【解决方案10】:

                Build Phases” -> “Compile Sources” 点击按钮“Validate Settings”

                它会修复你的项目

                【讨论】:

                • 这个按钮在哪里?
                • 找不到!?你是认真的吗?
                猜你喜欢
                • 2013-12-03
                • 1970-01-01
                • 2012-12-31
                • 2017-11-14
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多