Xcode下架构x86_64的重复符号

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

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

377276 次浏览

架构x86_64的75个重复符号

表示你已经加载了相同的函数两次。 当从Other Linker Flags,中删除-ObjC后,问题消失 这意味着该选项导致函数加载两次:

来自技术问答

这个标志使链接器加载库中的每个对象文件 它定义了一个Objective-C类或类别。而这个选项 通常会导致更大的可执行文件(由于额外的目标代码) 加载到应用程序中),它将允许成功创建 有效的包含类别的Objective-C静态库 现有的类。< / p >

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

愚蠢的一个,但确保你没有在某个地方错误地__abc0__abc1文件

我发现公认的答案涉及到这个问题,但没有帮助我解决它,希望这个答案将有助于解决这个非常令人沮丧的问题。

duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:


17 duplicate symbols for architecture x86_64

意味着你已经加载了相同的函数两次。当从其他链接器标志中删除-ObjC后,问题消失了,这意味着该选项导致函数加载两次:

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

例如,在下图中,你可以看到我有两个BImageViewControllers,对我来说,这是导致问题的原因。

只要我删除了一个,问题就消失了:)

enter image description here

从其他链接标志中移除-ObjC或

.请检查您是否误导入了。m文件而不是。h文件

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

Message.m文件

const int kMessageLength = 36;


@implementation Message


@end

在文件Chat.m

const int kMessageLength = 20;


@implementation Chat


@end

在我的例子中,我只是创建了一个头文件来定义像这样的常量字符串:

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

我用static解决了这个问题:

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

当我将lob项目集成到我的项目中时,同样的问题也发生在我身上。

enter image description here

实际上,lob项目也有AFNetworking文件, 所以我从lob项目中删除。m文件

enter image description here

实际上。m文件与我的项目POd/AFNetworking/ .m文件冲突

enter image description here

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

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

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

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

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

3:删除了所有的导出数据

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

最近在寻找错误的来源时非常头疼。我很好奇,当我发现我的应用程序不想编译,只是因为我在不同的类中有以下代码片段:

dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
NSTimeInterval interval;
double second, subsecond;
struct timespec time;
dispatch_time_t milestone;




interval = [date timeIntervalSince1970];
subsecond = modf(interval, &second);
time.tv_sec = second;
time.tv_nsec = subsecond * NSEC_PER_SEC;
milestone = dispatch_walltime(&time, 0);


return milestone;
}

希望这能帮到别人。

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

当我添加一个pod存储库时,我得到了同样的错误

pod 'SWRevealViewController'

对于已经添加的源代码(SWRevealViewController)从gitHub。因此,该错误将通过删除源代码或pod存储库来修复。

案例2:

第二次,当我声明一个h中的常数文件时出现了这个错误。

NSString * const SomeConstant  = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...
我也有同样的问题。 在Xcode 7.2中,在路径Project Target > Build Setting > No Common Blocks中,我将其更改为No .

另一个会导致此错误的愚蠢错误是重复文件。我不小心复制了一些文件两次。首先我去了目标->构建阶段->编译源代码。在那里,我注意到列表上的一些文件两次以及它们的位置。

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

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

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

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

我今天也有这个毛病。这是因为我在.m文件中定义了一个const值。但我定义了另一个.m文件,其中也包含这个const值。这意味着它有两个相同的const值。所以出现了这个错误。 我的解决方案是在const值之前添加关键字“static”。如:< / p >
static CGFloat const btnConunt = 9;

然后我构建项目,它不会报告这个错误。

我在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
};

如果有人对此有解释,请开导我。

1.进入构建阶段

2.搜索文件名

3.删除重复的

→错误就会消失。

如果没有,试着搜索&;file.m",如果你看到任何#import "file.m",清除这一行

我面临着我所犯过的同样的错误

1.复制复制的符号文件(类名或框架名),从这一行(体系结构x86_64的重复符号)的末端开始。

2. 粘贴到Find Navigator并按enter

它显示了重复的类。我删除了重复的类并成功运行。

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

找到副本的最快方法是:

  1. 寻找目标
  2. 进入构建阶段
  3. 转到编译源
  4. 删除重复的文件。

在多个类中在@implementation下定义相同的变量也会导致这个问题。

对我来说,在Xcode8推荐的项目设置中将“No Common Blocks”更新为YES,这导致了这个问题。

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

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

希望这能对你有所帮助!

在我的例子中,在这个位置中有两个同名的文件

目标>构建阶段>编译源代码并删除任何重复文件。

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

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

这使得构建失败,在我更新的项目中出现duplicate symbol错误。所以我在构建设置中将No Common Block更改为NO,错误就消失了。

对于其他有这个问题的人,我在这些答案中都没有看到我的解决方案。

在手动处理了.pbxproj合并冲突后(尽管很糟糕),在.pbxproj中有对单个类文件的重复引用。从项目>构建阶段>编译源代码删除这些为我修复了一切。

希望这能帮到你。

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

当我在文件而不是. cpp文件中实现一个具有范围解析操作符的类方法时,发生了这个错误。

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

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

#import "ViewController.m"

今天,我得到了同样的错误。错误的关键字是duplicate。我通过:

1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :

remove reference

3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear
在我的例子中,我将我的核心数据模型的实体命名为对象。 我定义了一个对象"Event。h"同时我有了这个实体"Event"我最终重命名实体。

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

BOOL myVar = NO;

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

  1. 将其声明为静态,以限制类的作用域:

    static BOOL myVar = NO;
    
  2. Remove the initialization (which will make the two classes share the global var):

    BOOL myVar;
    -(void) init{
    myVar = NO;
    }
    
  3. Declare it as a property:

    @property BOOL myVar;
    
  4. Declare it as a proper iVar in the @interface

    @interface myClass(){
    BOOL myVar;
    }
    @end
    
  • 寻找目标
  • 选择生成设置
  • 搜索"No Common Blocks" .,选择它到没有

这对我很有效

在我的情况下,我有两个main()方法定义在我的项目和删除一个解决了这个问题。

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

Xcode c++:: Duplicate Symbols for Architecture x86_64

在我看来,你不需要关闭任何标志或更改Xcode设置,重新阅读你的代码,并解决问题。改变环境只会减轻炎症而不是病因。

你能试着清除插件文件夹下的所有插件吗?

这对我很管用

请检查您添加的pod和Libraries。应该有一个或多个库是重复的。请把它从一边移开。我会解决这个问题。受影响的库将在x-code错误消息详细信息中列出。

从其他链接标志中删除-all_load。它对我的项目有效

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

进口“MenuItem.m”

而不是

进口“MenuItem.h”

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

上面的答案对我不起作用。下面是我解决这个问题的方法:

1)在finder,删除整个Pods文件夹和Podfile。锁文件 2)关闭xcode项目 3)在终端运行pod install 4)打开xcode项目,运行clean build命令

在那之后为我工作。

因为我还没有看到这个答案:

卸载并重新安装您的podfiles!删除或卸载之前添加的库:cocoapods

我已经遇到这个问题超过3次构建我的应用程序,每次这是什么解决它。:)

我在安装Cocoapods后遇到了这个问题。现在每次我更新一些豆荚。我找到了解决办法:

进入终端:

1) pod deintegrate
2) pod install

同时,在构建设置中选中“Always Embed Swift Libraries”。它应该是“褪色的”,表明它正在使用默认配置。如果设置为手动YES,点击删除将其恢复为默认配置。这制止了这种行为。

更新答案2021,Xcode 12。X:

pod deintegrate
pod install

希望这能有所帮助!

如果你正在使用,并认为这可能是你的豆荚,试试这个:

pod deintegrate
pod install

我只是遇到了问题。pod deintegrateRemoving podfile.lock方法可能对你有帮助,但尝试以下顺序,这可能比分解pod文件更有帮助

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

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

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

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标志,删除它的理由与已经提到的在这里相同

在我的情况下,我把构建系统改为遗留系统,它工作了。

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

文件比;工作空间设置>构建系统

enter image description here

我只是简单地卸载了我所有的豆荚,并重新安装。我还扔掉了一些没用过的豆荚。

我刚刚也犯了这个错误。发现问题在于,在整个编译到程序中的文件中,声明的变量具有全局作用域,具有相同的名称。一旦将全局变量更改为伪主函数的局部作用域,错误就得到了解决。

在XCode中打开你的项目

你会看到侧边栏现在聚焦在附加的图像上

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

你会看到你已经添加了任何文件两次

删除那个文件,你的问题就解决了。

注意:你必须从你错误地添加它的地方删除文件。

例如< >强 enter image description here < / p >

框架中删除FBSDKCoreKit

<强> < /好运强>

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

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

例如,我有这样的东西:

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

我试着遵循这些步骤,现在对我有用了。

  1. 打开Xcode >豆荚祝辞目标支持文件等;豆荚,{目标名}

    找到“OTHER_LDFLAGS"只移除“;-ObjC"在这两个文件中:

    豆荚-{目标名}.release。xcconfig,豆荚-{目标名}.debug.xcconfig

  2. 进入项目主要目标>Build Settings >其他链接标志:

    确保没有&;-ObjC"值中剩下的

  3. 我删除了ios中的build/ build文件夹,并再次运行-ios。现在起作用了。

这个答案适用于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运行。在使用颤振运行命令之前,不要忘记运行模拟器

祝贺一切顺利!

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

但是,我没有为我工作,而是从5份拷贝变成了1份…

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

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

这个消息很清楚,我删除了rn-fetch-blob,因为我不知道为什么它在我的项目中,但是,我只是开玩笑地使用并删除它,这不是一个问题。

因此,在删除该包并再次运行yarn之后,问题解决了…并且不改变GCC_NO_COMMON_BLOCKS

对于反应本地的情况,解决方案是简单地删除所有的库:Target >建造阶段;用库链接二进制文件。

Link Binary with Library .

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

Ive got this error after installed alamofires pod,但alamafire已经通过xcode的File/Add Packages....作为包安装在我删除了这个包并将其从目标/通用/框架中删除后,错误消失了…

对我来说,当我错误地为我的APP定义了两个入口点时,就发生了这种情况

< p > @main struct AppName: App { //Comment - @main

. //

< p > @UIApplicationMain 类AppDelegate //评论- @UIApplicationMain

我也在FBReactNativeSpec上遇到了这个问题,只是在运行脚本上做了检查-仅用于安装构建

enter image description here

我在Xcode 14中遇到了同样的问题。清理构建文件夹对我来说很有效。

选择“清洁构建文件夹”;选项从“产品”;菜单。

所以,我已经通过删除与Fabric相关的pod来解决这个问题,因为它与Crashlitics pod相冲突,因为它们实际上是相互复制的,因为Fabric只是Crashlitics的旧版本