16

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

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

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

非常感谢!

4

10 回答 10

23

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

于 2013-02-20T22:32:35.993 回答
17

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

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

    如果仍然不起作用,那么

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

于 2017-07-05T07:39:07.497 回答
5

在我的例子中,我声明

extern NSString const *keyString

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

于 2013-07-15T23:11:08.527 回答
2

就我而言,它是常数。

NSString *const cellID = @"cellID";

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

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

于 2017-04-03T05:42:59.473 回答
0

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

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

于 2013-02-21T00:43:42.657 回答
0

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

于 2013-09-19T16:16:38.063 回答
0

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

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

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

于 2017-04-14T04:17:48.803 回答
0

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

于 2017-05-17T17:39:20.573 回答
-1

构建阶段”->“编译源”单击按钮“验证设置”

它会修复你的项目

于 2013-09-11T02:21:07.827 回答