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

    /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到其他链接器标志。在删除这个值之后,我可以成功地构建我的项目,但我不知道为什么。有人能解释一下吗?


当前回答

当我在两年前用Objective-C开发的项目中接受“推荐设置”弹出时,我就遇到了这种情况。

问题是当你接受“推荐设置”更新时,Xcode会自动更改或添加一些构建设置,包括GCC_NO_COMMON_BLOCKS = YES;。

这使得构建失败与重复的符号错误在我更新的项目。所以我在我的构建设置中将No Common Block更改为No,错误就消失了。

其他回答

如果在头文件中定义了一些常用函数,请将它们更改为内联函数。

对我来说,将“无通用块”从“是”更改为“否”(在目标->构建设置->Apple LLVM -代码生成下)解决了这个问题。

当你在不同的类中声明同名的const变量时也会发生:

Message.m文件

const int kMessageLength = 36;

@implementation Message

@end

在文件Chat.m

const int kMessageLength = 20;

@implementation Chat

@end

确保你没有导入[ViewController。M]而不是头文件

#import "ViewController.m"

以上解决方案都不适合我,我只是自己解决了。

我得到了我的核心数据模型的重复符号,我自己做的,但是 在我的.xcdatamodeld检查器中,我选择了Codegen属性的类定义,我猜这就是问题所在。然后我选择手动/无,它得到了修复。

希望这能对你有所帮助!