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也会导致这个问题。
以下步骤解决了我的问题。
- 转到目标设置中的构build阶段。
- 转到“与库链接二进制文件”。
- 检查是否有任何库存在两次。
- 重新构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重复的最快方法是:
- 去目标
- 去build立阶段
- 转到编译源代码
- 删除重复的文件。
对我来说,在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"