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

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


当前回答

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

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

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

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

其他回答

与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

有时候,当你导入错误的文件时,就会发生这种情况,比如for ex.:

进口“MenuItem.m”

而不是

进口“MenuItem.h”

这将抛出体系结构x86_64的重复错误

如果你来这里是为了一个React Native项目,那么请点击下面的链接,

Targets -> <Your-App> -> Build Settings -> Dead Code Stripping

调试时从No更改为Yes。

附注:这种方法适用于React Native项目,不确定它是否也适用于本地项目。

对于React Native,解决方案是简单地删除所有的库:Target > Build Phases > Link Binary with Library。

我真的不知道原因,但我认为React Native已经安装了包,创建副本。

寻找目标 选择生成设置 搜索“No Common Blocks”,选择为“No”。

这对我很有效