【问题标题】:Xcode error "Duplicate Symbol" causing Apple Mach-O Linker ErrorXcode 错误“重复符号”导致 Apple Mach-O 链接器错误
【发布时间】:2013-01-10 10:46:35
【问题描述】:
duplicate symbol _leagueTableLoaded in:
/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o

/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToMeViewController.o

duplicate symbol _showGLobalCompany in:

/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o

/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToPositionViewController.o

duplicate symbol _leagueTableLoaded in:

/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTGlobalResultsViewController.o

/Users/Brendan/Library/Developer/Xcode/DerivedData/2013-dbhrwzgxgwhfbqatgqpfrmqyucyu/Build/Intermediates/2013.build/Debug-iphonesimulator/2013.build/Objects-normal/i386/LTJumpToPositionViewController.o

ld: 3 duplicate symbols for architecture i386

clang: error: linker command failed with exit code 1 (use -v to see invocation)

只有当我尝试在模拟器中构建时(在任何我可以无错误构建的 iOS 设备上),我才会在 xcode 中收到上述错误。我有三个班级:

1.LTGlobalResultsViewController 2.LTJumpToMeViewController 3.LTJumpToPositionViewController

这三个都是在 xcode 中创建的,但 2 和 3 都在 xcode 之外进行了修改,然后重新构建。

@property bool LeagueTableLoaded 在所有三个的标题中定义。它被声明为:

@property bool leagueTableLoaded;

究竟是什么导致了这个错误?我尝试了以下方法:

  1. 我尝试在不同的类中重命名leagueTableLoaded,但这并不能解决问题。

  2. 我已尝试在 library/developer/xcode 文件夹中手动删除我的派生数据文件。

  3. 根据其他问题,我检查了我是否正在导入 .m 文件。不是这种情况。 Apple Mach-O Linker error ("duplicate symbol")

还有其他建议或建议吗? 谢谢, 詹姆斯

补充:根据要求,请从我的 .h 和 .m 文件中找到所有引用 LeagueTableLoaded 或我在尝试绕过此错误时创建的任何变体的提取:

LTJumpToMeViewController.h
@property bool leagueTableLoadedMe;

LTJumpToMeViewController.m
@implementation LTJumpToMeViewController
bool leagueTableLoaded = false;

LTGlobalResultsViewController.h
@property bool globalLeagueTableLoaded;

LTGlobalResultsViewController.m
@implementation LTGlobalResultsViewController
bool leagueTableLoaded = false;

LTJumpToPositionViewController.h
@property bool leagueTableLoadedPos;

LTJumpToPositionViewController.m
@implementation LTJumpToPositionViewController
bool leagueTableLoaded = false;

如果需要,我可以提供更多信息!

【问题讨论】:

  • 请显示声明这些属性(或至少其中一个)的头文件。
  • 已在问题正文中更新。谢谢
  • 这还不足以解决这个问题。请转到命令提示符并切换到您的项目目录并输入 find . -type f -exec grep leagueTableLoaded {} \; 并在此处发布输出。
  • 输出如下: bool LeagueTableLoaded = false; @property bool LeagueTableLoadedPos; bool LeagueTableLoaded = false; if ([self checkIfBonusSubmitted] == true && self.leagueTableLoadedPos == false) self.leagueTableLoadedPos = true; bool LeagueTableLoaded = false; @property bool LeagueTableLoadedPos; bool LeagueTableLoaded = false; if ([self checkIfBonusSubmitted] == true && self.leagueTableLoadedPos == false) self.leagueTableLoadedPos = true;
  • 对此有什么想法请特洛伊木马?谢谢,詹姆斯

标签: xcode linker mach-o


【解决方案1】:

当我心不在焉地包含 .m 文件而不是 .h 时,出现了重复符号错误(为什么 Xcode 的自动建议甚至显示 .m 文件?!)

【讨论】:

    【解决方案2】:

    最终,这是由在 LTGlobalResultsViewController.m 和 LTJumpToPositionViewController.m 中定义的leagueTableLoaded bool 引起的。

    从其中一个中删除它解决了这个问题。虽然我不知道为什么它一开始就在那里!希望这可以帮助遇到同样问题的其他人!詹姆斯

    【讨论】:

      【解决方案3】:

      Xcode 错误“Duplicate Symbol”导致 Apple Mach-O Linker Error 是由 Project 中的重复符号引起的。避免错误的步骤

      1. 转到项目 -> 目标 ->构建阶段 ->编译源代码
      2. 检查重复文件(实现文件)
      3. 删除文件并重新添加
      4. 再次清理并运行项目

      这对我有用。希望对你有帮助

      【讨论】:

        【解决方案4】:

        在第二个视图控制器中,您错误地 #import "First.m",检查它必须是 first.h 文件所以替换这个与 first.h。它对我有用。

        【讨论】:

          猜你喜欢
          • 2014-01-16
          • 1970-01-01
          • 2023-04-11
          • 2015-09-02
          • 2012-12-31
          • 2017-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多