我现在也有同样的问题,但还没有找到正确的答案。我得到了错误:

    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

任何帮助都是感激的。

最后,我找到了这个错误的原因,因为我添加了-ObjC到其他链接器标志。在删除这个值之后,我可以成功地构建我的项目,但我不知道为什么。有人能解释一下吗?


当前回答

确保您没有意外导入.m文件,您可能想要在项目窗口中删除派生数据,然后重新构建和运行。

其他回答

以下步骤为我解决了这个问题。

进入“目标设置”中的“构建阶段”。 转到“用库链接二进制”。 检查是否有库存在两次。 再次构建。

我希望它一定会对你有所帮助

我得到相同的错误3重复符号的架构x86_64

在我的情况下,我从同一项目的另一个文件复制了代码。代码的a.m.文件到B.m和编译后,我得到了一个错误提到。我已经解决了通过改变全局变量的名称的错误。

这个错误出现在我的情况下,因为在两个文件中相同的声明全局变量。

在Xcode 6.3.2中。我检查了所有的可能性如下

1:我还没有导入。m文件在我的项目。

2:从其他链接标志中删除-ObjC。

3:删除了我所有的衍生数据。

我仍然得到同样的错误。我通过从.pch文件中删除任何变量声明来消除这个错误。在我的情况下,我在.pch文件中声明了AppDelegate对象。最后我找到了导致错误的原因。因此,我从.pch文件和我的项目工作魅力中删除任何变量的声明。

与Juice007类似,我在两个不同的.m文件中声明和初始化了一个C类型变量(没有导入!)

BOOL myVar = NO;

然而,这种声明和初始化变量的方法,即使是在.m中,即使是在@implementation中,也赋予了它全局作用域。你的选择是:

将其声明为静态,以限制类的作用域: myVar = NO; 删除初始化(这将使两个类共享全局变量): BOOL myvar#; - (void) init { myVar = NO; } 将其声明为属性: @属性BOOL myVar; 在@interface中将它声明为一个合适的iVar @ interface myClass () { BOOL myvar#; } @end

当您链接任何库或文件两次时,通常会出现此错误。在错误描述中,将列出复制文件的名称,您可以搜索并确保没有复制文件。如果你发现重复的,为了安全起见,删除对其中一个的引用