Xcode错误“Duplicate Symbol”导致Apple Mach-O链接器错误

时间:2013-01-10 10:46:36

标签: xcode linker mach-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/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)

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

1.LTGlobalResultsViewController 2.LTJumpToMeViewController 3.LTJumpToPositionViewController

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

@property bool leagueTableLoaded在这三个标题中定义。它被声明为:

@property bool leagueTableLoaded;

导致此错误的确切原因是什么?我尝试过以下方法:

  1. 我尝试在不同的类中重命名leagueTableLoaded,但这并没有解决它。

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

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

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

    附加:根据要求,请查找我的.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;
    

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

4 个答案:

答案 0 :(得分:6)

对我来说,当我心不在焉地包含一个.m文件而不是.h时出现重复符号错误(为什么Xcode的autosuggest甚至会显示我.m文件?!)

答案 1 :(得分:0)

最后,这是由LTGlobalResultsViewController.m和LTJumpToPositionViewController.m中定义的leagueTableLobo bool引起的。

从其中一个中删除它修复了问题。虽然我不确定为什么它首先在那里!希望这能帮助遇到同样问题的其他人!詹姆斯

答案 2 :(得分:0)

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

  1. 转到项目 - > 目标 - > 构建阶段 - > 编译来源
  2. 检查重复文件(实施文件)
  3. 删除文件并重新添加
  4. 再次清理并运行项目
  5. 这对我有用。希望它有所帮助

答案 3 :(得分:0)

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