Xcode下架构x86_64的重复符号

 发疯 发布于 2023-01-08 15:58

我现在对上面的标题有同样的问题,但还没有找到正确的答案.我收到了错误:

    /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)

任何帮助表示赞赏.

最后  我找出了这个错误的原因,因为我加入-ObjCOther Linker Flags.删除此值后,我可以成功构建我的项目,但我不知道为什么.有谁能解释一下?

16 个回答
  • 我在Xcode 7.3中打开一些遗留项目的情况是:

    duplicate symbol _SomeEnumState in:
    

    接下来是两个不相关的文件列表.然后重复几次,最后:

    ld: 8 duplicate symbols for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    为我解决的是改变枚举声明:

    enum SomeEnumState {
        SomeEnumStateActive = 0,
        SomeEnumStateUsed = 1,
        SomeEnumStateHidden = 2
    } SomeEnumState;
    

    对此:

    typedef NS_ENUM(NSUInteger, SomeEnumState) {
        SomeEnumStateActive = 0,
        SomeEnumStateUsed = 1,
        SomeEnumStateHidden = 2
    };
    

    如果有人对此有解释,请赐教.

    2023-01-08 15:59 回答
  • 对我来说,将"No Common Blocks"从Yes更改为No(在Targets-> Build Settings-> Apple LLVM - Code Generation下)修复了问题.

    2023-01-08 15:59 回答
  • 愚蠢的,但要确保你没有#import.m某处错误地编辑过文件

    2023-01-08 15:59 回答
  • 在多个类中的@implementation下定义相同的变量也会导致此问题.

    2023-01-08 15:59 回答
  • 我发现接受的答案触及了问题,但没有帮助我解决它,希望这个答案将有助于解决这个非常令人沮丧的问题.

    duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:
    
    17 duplicate symbols for architecture x86_64
    

    "表示您已经加载了两次相同的函数.由于从其他链接器标志中删除-ObjC后问题消失,这意味着此选项导致函数加载两次:"

    通俗地说,这意味着我们的项目中有两个文件具有完全相同的名称.也许你正在将一个项目合并到另一个项目中?看一下"重复符号"错误上面的错误,看看哪个文件夹是重复的,在我看来是BLoginViewController.

    例如,在下面的图像中,您可以看到我有两个BImageViewControllers,对我而言,这就是导致问题的原因.

    一旦我删除了一个,那么问题就消失了:)

    在此输入图像描述

    2023-01-08 15:59 回答
  • 我有同样的问题.在路径项目目标>构建设置>无公共块中的Xcode 7.2中,我将其更改为NO.

    2023-01-08 15:59 回答
  • 架构x86_64的75个重复符号

    表示您已经加载了两次相同的功能.由于问题进行去除后消失 -ObjCOther Linker Flags, ,这意味着该选项结果是功能加载两次:

    来自技术问答

    此标志使链接器加载定义Objective-C类或类别的库中的每个目标文件.虽然此选项通常会导致更大的可执行文件(由于加载到应用程序中的其他对象代码),但它将允许成功创建包含现有类的类别的有效Objective-C静态库.

    https://developer.apple.com/library/content/qa/qa1490/_index.html

    2023-01-08 15:59 回答
  • 以下步骤解决了我的问题.

      转到目标设置中的构建阶段.

      转到"使用库链接二进制".

      检查是否存在任何库两次.

      再建一次.

    2023-01-08 15:59 回答
  • 对于我在Xcode8推荐的项目设置期间,将"No Common Blocks"更新为YES会导致此问题.

    2023-01-08 16:00 回答
  • 前往目标

    选择构建设置

    搜索“ No Common Blocks”,将其选择为NO

    对我有用

    2023-01-08 16:00 回答
  • 当我在两年前在Objective-C中开发的项目中接受"推荐设置"弹出窗口时,就会发生这种情况.

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

    这使得构建失败并且duplicate symbol更新了我的更新项目中的错误.所以我改变了No Common BlockNO我的构建设置和错误不见了.

    2023-01-08 16:00 回答
  • 当您在不同的类中声明具有相同名称的const变量时也会发生:

    在文件Message.m中

    const int kMessageLength = 36;
    
    @implementation Message
    
    @end
    

    在文件Chat.m中

    const int kMessageLength = 20;
    
    @implementation Chat
    
    @end
    

    2023-01-08 16:00 回答
  • 从其他链接器标志中删除-ObjC或者请检查您是否错误导入了任何.m文件而不是.h文件.

    2023-01-08 16:00 回答
  • 找到副本的最快方法是:

      转到目标

      转到构建阶段

      转到编译源

      删除重复文件.

    2023-01-08 16:00 回答
  • 就我而言,该位置有两个同名的文件

    目标>构建阶段>编译源并删除任何重复的文件.

    2023-01-08 16:00 回答
  • 在我的例子中,我刚刚创建了一个头文件来定义这样的常量字符串:

    NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
    

    我使用static以下方法解决了这个问题

    static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";
    

    2023-01-08 16:00 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有