Xcode 4.6上的Mach-O链接器错误

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

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

有谁知道如何解决这个问题?

非常感谢!

只需转到“构建阶段” – >“编译源代码”并查找类的副本。

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

在我的例子中,我宣布

 extern NSString const *keyString 

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

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

    如果仍然没有工作那么

    构建设置>启用Bitcode>否 在此处输入图像描述

就我而言,这是常数。

 NSString *const cellID = @"cellID"; 

这一行是用两个.m文件编写的。 在开始附加static关键字后,问题得以解决。

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

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

坦率地说,这可能是一个错误。 我修复它的唯一和最快的方法是启动一个新项目并拉入所有类。

确保你没有在多个类中具有相同名称的非即时方法(例如,如果我有两个非常相似的viewcontroller,那么为了快速移动我将代码从一个viewcontroller复制并粘贴到第二个,它们都是有一些方法称为相同的东西:NSMutableString * filteredStringFromStringWithFilter(NSString * string,NSString * filter))然后应用程序混淆了哪些方法可用,因为它们都可用,RENAME IT在第二个类上并更改任何调用该类的方法,你已经消除了混乱。 难道我们都不希望事情变得更清楚!

如果你想在不同的class级中改变一个值。 请记住使用静态关键字进行标记。

或者clang会在没有任何价值解释的情况下抛出这样的错误。

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

当您重构类func时,您有时也会遇到此错误。 只需转到产品 – >清洁并重建。

构建阶段“ – >”编译源“单击”validation设置“按钮

它会修复你的项目