Xcode下架构x86_64的重复符号

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

/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 。 删除这个值后,我可以成功地build立我的项目,但我不知道为什么。 任何人都可以解释吗?

体系结构x86_64的75个重复符号

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

从技术问答

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

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

愚蠢的一个,但要确保你没有#import错误的.m文件错误的地方

对我来说,将“无公共块”从“是”更改为“否”(在“目标” – >“生成设置” – >“Apple LLVM – 代码生成”下)修复了此问题。

就我而言,我只是创build了一个头文件来定义像这样的常量string:

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

我通过使用static解决了这个情况:

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

在不同的类中声明具有相同名称的常量variables时​​也会发生:

在文件Message.m中

 const int kMessageLength = 36; @implementation Message @end 

在文件Chat.m

 const int kMessageLength = 20; @implementation Chat @end 

我有同样的问题。 在pathProject Target> Build Setting> No Common Blocks的Xcode 7.2中,我将其更改为NO。

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

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

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

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

例如,在下面的图片中,您可以看到我有两个BImageViewController,对我来说这是造成这个问题的原因。

只要我删除一个然后问题消失:)

在这里输入图像说明

当我接受两年前在Objective-C开发的一个项目中popup的“推荐设置”时,发生在我身上。

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

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

从其他链接器标志中删除-ObjC或请检查您是否错误地导入了任何.m文件而不是.h文件。

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

以下步骤解决了我的问题。

  1. 转到目标设置中的构build阶段。
  2. 转到“与库链接二进制文件”。
  3. 检查是否有任何库存在两次。
  4. 重新构build。

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

如果有人有这个解释,请赐教。

find重复的最快方法是:

  1. 去目标
  2. 去build立阶段
  3. 转到编译源代码
  4. 删除重复的文件。

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

在我的情况下,在该位置有两个同名的文件

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

确保您没有导入.m文件,您可能想要在“项目”窗口中删除您的派生数据,然后再次构build并运行。

当我添加一个Pod仓库时,我得到了同样的错误

 pod 'SWRevealViewController' 

已经从gitHub添加了源代码(SWRevealViewController)。 所以,错误将通过删除源代码或Pod仓库来解决。

案例#2:

第二次,当我在.h文件中声明一个常量时出现这个错误。

 NSString * const SomeConstant = @"SomeValue"; @interface AppDelegate : UIResponder <UIApplicationDelegate> { ... ... 

同样的问题发生在我身上,当时我在项目中集成了吊球项目。

在这里输入图像说明

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

在这里输入图像说明

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

在这里输入图像说明

最近有一个头痛寻找错误的来源。 我很奇怪,当我发现我的应用程序不想编译,只是因为我有不同的类中的代码片段:

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

希望可以帮助别人。

另一个会导致这个错误的愚蠢的错误是重复的文件。 我不小心复制了一些文件两次。 首先我去了目标 – >build立阶段 – >编译来源。 在那里,我注意到列表上的一些文件两次,他们的位置。

我希望它一定会帮助你

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

在我的情况下,我从同一个项目的另一个文件,例如复制代码。 Am文件到Bm的代码,经过补充,我提到了一个错误。 我通过更改全局variables的名称来解决错误。

这个错误来到我的情况,因为在这两个文件相同的声明全局variables。

1.去build立阶段2.search文件名3.删除重复 – >错误将消失。

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

我面对同样的错误,我做了什么

1.从行的上方(结构x86_64的重复符号)末尾复制重复的符号文件(类名称或框架名称)。

2.将其粘贴到“查找导航器”中,然后按Enter键

这给我看了重复的课。 我删除重复的类,并成功运行。

上述解决scheme都不适用于我,我只是自己修复它。

我得到了自己的core data model重复符号,但在我的.xcdatamodeld检查器中,我selectCodegen属性的Class Definition ,我想这是错误的。 然后我selectManual/None ,它已经修复。

希望这可以对你有所帮助!

当您连接任何库或文件两次时,通常会发生此错误。 在错误说明中,重复文件的名称将被列出,您可以search并确保您没有重复。 如果您发现重复,请删除对其中一个的引用以保证安全

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

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

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

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

还是我得到同样的错误。 我已经通过从.pch文件中删除任何variables声明来删除此错误 。 在我的情况下,我已经在.pch文件中声明了AppDelegate对象。 最后我发现导致错误的原因。 所以我从.pch文件和我的项目工作魅力删除任何variables的声明。

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

 static CGFloat const btnConunt = 9; 

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

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

在手动寻址.pbxproj合并冲突之后(虽然效果不佳),在.pbxproj中有个别类文件的重复引用。 从项目>构build阶段>编译源删除这些修复了我的一切。

希望这可以帮助某个人。

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

PS:我在Macbook优胜美地的C ++编程。

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

 #import "ViewController.m"