【问题标题】:Duplicate symbols for architecture x86_64 under XcodeXcode下架构x86_64的重复符号
【发布时间】:2014-08-09 11:49:02
【问题描述】:

我现在有与上述标题相同的问题,但还没有找到正确的答案。我得到了错误:

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

感谢任何帮助。

终于我找到了这个错误的原因,因为我在Other Linker Flags 中添加了-ObjC。删除此值后,我可以成功构建我的项目,但我不知道为什么。谁能解释一下?

【问题讨论】:

  • 链接器遇到了不止一次定义的符号 - 确切地说是 75 个。这很可能是因为您不止一次 #include'd 或 #import'd 某些东西(可能是 MoboSDK,不管是什么)。
  • 此错误发生在我将GoogleConversionTrackingSDK-iOS-3.0 添加到我的项目后。在此之前,它工作正常。我也尝试将其删除,但错误仍然发生。
  • 这不是你的情况,因为在我添加 google 的 sdk 之前我的项目构建正常。
  • Adam Waite 的第二个回答非常直接。确保某处没有 .m 文件#imported。
  • 就我而言,我试图在两个单独的类中使用相同的字符串数组名称。当我在其中一个类中更改数组名称时,此错误已被删除。

标签: ios objective-c xcode5


【解决方案1】:

确保您没有导入 [ViewController.m] 而不是头文件

#import "ViewController.m"

【讨论】:

  • 这就是我参与这个问题的原因!
【解决方案2】:

有时,当您导入错误的文件时会发生这种情况,例如 for ex.:

导入“MenuItem.m”

代替

导入“MenuItem.h”

这将引发重复错误duplicate symbols for architecture x86_64

【讨论】:

    【解决方案3】:

    在 Xcode 6.3.2 中。我已经检查了所有可能性,如下所示

    1:我的项目中没有导入 .m 文件。

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

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

    我仍然遇到同样的错误。 我已通过从 .pch 文件中删除任何变量声明来消除此错误。就我而言,我在.pch 文件中声明了AppDelegate 对象。最后我找到了导致错误的原因。所以我从 .pch 文件和我的项目工作魅力中删除了任何变量的声明。

    【讨论】:

      【解决方案4】:

      我今天也有这个问题。那是因为我在 .m 文件中定义了一个 const 值。但是我定义了另一个 .m 文件,其中也包含了这个 const 值。这意味着它有两个相同的 const 值。所以这个出现错误。 而我的解决方案是在const值前加一个关键字“static”。如:

      static CGFloat const btnConunt = 9;
      

      然后我构建项目就不会报这个错误了。

      【讨论】:

        【解决方案5】:

        我遇到了同样的错误

        1.从刚刚显示的行(架构x86_64的重复符号)的末尾复制重复的符号文件(类名或框架名)。

        2。将其粘贴到 Find Navigator 中并按 enter

        它向我展示了重复的课程。我删除了重复的类并成功运行。

        【讨论】:

          【解决方案6】:

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

          我得到了我自己制作的 core data model 的重复符号,但是 在我的.xcdatamodeld 检查员中,我选择了Codegen 属性中的Class Definition,我想这就是问题所在。然后我选择Manual/None,它得到了修复。

          希望对您有所帮助!

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              这个答案很好地解释了为什么会出现这个问题:

              Xcode C++ :: Duplicate Symbols for Architecture x86_64

              在我看来,您不需要关闭任何标志或更改 Xcode 设置、重新阅读您的代码并解决问题。更改设置只会消退炎症而不是原因。

              【讨论】:

                【解决方案9】:

                从其他链接器标志中删除 -all_load。它适用于我的项目

                【讨论】:

                  【解决方案10】:

                  如果您正在使用并认为它可能是您的 pod,请尝试以下操作:

                  pod deintegrate
                  pod install
                  

                  【讨论】:

                    【解决方案11】:

                    1.进入构建阶段

                    2.搜索文件名

                    3.删除重复项

                    -> 错误会消失。

                    如果没有,请尝试搜索“file.m”,如果看到任何 #import "file.m" ,请清除此行

                    【讨论】:

                      【解决方案12】:

                      我也遇到了这个错误。发现问题是在全局范围内声明的具有相同名称的变量在编译到程序中的文件中重复出现。一旦将全局变量更改为伪主函数的局部范围,错误就解决了。

                      【讨论】:

                        【解决方案13】:

                        此答案适用于 Xcode 12.5.1,于 2021 年为我工作

                        1. 关闭您的 Xcode 项目。
                        2. 进入你的项目目录,如果你使用flutter不要忘记进入项目文件夹中的“ios”文件。
                        3. 删除 [Pods、Podfile、Podfile.lock]。
                        4. 运行终端。
                        5. 转到您的项目目录。

                        如果您使用 swift,则在此处完成跳转到 xcode 并运行应用程序,如果您使用的是 Flutter,请继续

                        1. 运行flutter clean
                        2. 运行flutter pub get
                        3. 运行flutter run在使用 flutter run 命令之前不要忘记运行模拟器

                        恭喜一切正常!

                        【讨论】:

                          【解决方案14】:

                          我刚刚遇到了这个问题。 pod deintegrateRemoving podfile.lock 方式对您有帮助,但请尝试以下顺序,这可能比分解 pod 文件更有帮助

                          • 评论Podfile中的所有pod
                          • 运行pod install,它将从项目中删除Pods文件夹
                          • 取消注释Podfile 中的所有 pod
                          • 再次运行pod install

                          【讨论】:

                            【解决方案15】:

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

                            【讨论】:

                              【解决方案16】:

                              我的错误是在头文件中实现了函数。 头文件中的函数定义和代码文件中的函数实现应该有明确的区别。

                              例如,我有类似的东西:

                              my_header.h

                              #ifdef my_header_h
                              #define my_header_h
                              
                              int foo() { return 123; }
                              
                              #endif // my_header_h
                              

                              应该是:

                              #ifdef my_header_h
                              #define my_header_h
                              
                              int foo();
                              
                              #endif // my_header_h
                              

                              【讨论】:

                                【解决方案17】:

                                当我在 header 文件而不是 .cpp 文件中使用范围解析运算符实现类方法时,发生了这个错误。

                                PS:我在 Macbook Yosemite 上使用 C++ 编程。

                                【讨论】:

                                  【解决方案18】:

                                  在我的例子中,我将核心数据模型的实体命名为与对象相同。 所以:我定义了一个对象“Event.h”,同时我有一个名为“Event”的实体。我最终重命名了实体。

                                  【讨论】:

                                    【解决方案19】:

                                    你可以尝试清除插件文件夹下的所有插件吗?

                                    对我有用

                                    【讨论】:

                                      【解决方案20】:

                                      请检查您添加的 pod 和库。应该有一个或多个库被重复。请从一侧取下。我会解决这个问题。并且受影响的库将在 x-code 错误消息详细信息中列出。

                                      【讨论】:

                                        【解决方案21】:

                                        只需卸载与之相关的 pod 并重新安装即可。

                                        【讨论】:

                                          【解决方案22】:

                                          上面提到的答案都没有帮助,因为我在 pod 和本地存储的框架中出现了类似的错误,看起来像这样,

                                          duplicate symbol '_OBJC_METACLASS_$_EZAudioDevice' in:
                                              /Users/(yourUserName)/Desktop/Source Code/(yourProjectName)/Pods/AudioKit/iOS/AudioKit.framework/AudioKit(EZAudioDevice.o)
                                              /Users/(yourUserName)/Desktop/Source Code/(yourProjectName)/ChirpSDK.framework/ChirpSDK(EZAudioDevice.o)
                                          

                                          所以解决方法是在项目中找到/Users/(yourUserName)/Desktop/Source Code/(yourProjectName)/Pods 目录,您将在其中找到这两个文件,

                                          • Pods-(yourProjectName).debug.xcconfig
                                          • Pods-(yourProjectName).release.xcconfig

                                          在这两个文件中,您需要删除OTHER_LDFLAGS = $(inherited)下的-ObjC标志,删除它的原因与已经提到的here相同

                                          【讨论】:

                                            【解决方案23】:

                                            我只是卸载了我所有的 pod 并重新安装了它们。我还摆脱了一些我不使用的豆荚。

                                            【讨论】:

                                              【解决方案24】:

                                              在 XCode 中打开您的项目

                                              您将看到侧边栏现在专注于附加的图像。

                                              搜索您的特定 SDK 或您遇到问题的任何重复文件。

                                              您将看到您已添加任何文件两次

                                              只需删除该文件,您的问题就会得到解决。

                                              注意:您必须从错误添加的位置删除文件。

                                              举例

                                              注意:只需从 Frameworks

                                              中删除 FBSDKCoreKit

                                              祝你好运

                                              【讨论】:

                                                【解决方案25】:

                                                我尝试按照这些步骤操作,现在它对我有用。

                                                1. 打开 Xcode > Pods > Targets Support Files > Pods-{TARGET-NAME}

                                                  在这两个文件中找到“OTHER_LDFLAGS”并仅删除“-ObjC”:

                                                  Pods-{TARGET-NAME}.release.xcconfig & Pods-{TARGET-NAME}.debug.xcconfig

                                                2. 转到项目主目标>构建设置>其他链接器标志:

                                                  确保值中没有“-ObjC”

                                                3. 我删除了 ios 中的 build/Build 文件夹并再次运行 ios。现在可以了。

                                                【讨论】:

                                                  【解决方案26】:

                                                  我的问题是架构 x86_64 有 5 个重复符号。在阅读了这篇文章和他们的答案后,我尝试使用关于将 GCC_NO_COMMON_BLOCKS = YES 更改为 NO 的常见解决方案

                                                  但是,我没有为我工作,而是从 5 个副本变成了 1 个副本……

                                                  所以,我注意到了最后一个错误,我意识到我的问题是什么,这是与这些包“不兼容”(我在package.json 中都有):

                                                  rn-fetch-blob
                                                  react-native-blob-util
                                                  

                                                  消息很清楚,我删除了rn-fetch-blob,因为我不知道为什么它出现在我的项目中,但是,我只是用 jest 并删除它,这不是问题。

                                                  所以,在删除那个包之后,再次运行yarn,问题就解决了……而且不改变GCC_NO_COMMON_BLOCKS

                                                  【讨论】:

                                                    【解决方案27】:

                                                    对于 React Native,解决方案只是删除以下所有库:Target > Build Phases > Link Binary with Library。

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

                                                    【讨论】:

                                                      【解决方案28】:

                                                      在我的情况下,我将构建系统更改为旧版并且它有效。

                                                      您可以在菜单中访问此选项:

                                                      文件 > 工作区设置 > 构建系统

                                                      【讨论】:

                                                      • 旧版构建系统已弃用
                                                      猜你喜欢
                                                      • 2015-02-10
                                                      • 1970-01-01
                                                      • 1970-01-01
                                                      • 2015-01-22
                                                      • 2022-06-13
                                                      • 2023-04-04
                                                      • 2016-07-13
                                                      • 1970-01-01
                                                      相关资源
                                                      最近更新 更多