体系结构arm64的重复符号


103

当我尝试运行Xcode Project时,它失败并出现错误,指出我有重复的符号。我在网上查看了发现这些重复项的地方,但是没有运气:

在此处输入图片说明

任何想法如何解决这一问题?


1
这意味着您有太多的BFAppLinkReturnToRefererView
Andrey Chernukha 2014年

另外,您可能需要稍微整理一下项目,而不是链接到桌面上的框架。:)
picciano

就我而言,我添加了extern NSString * const tColor; 在.h文件和NSString const * tColor = @“#000022”; 在两个不同的.m类中。
ios_dev

您可能会在这里找到您想要的东西stackoverflow.com/a/46678210/988941
MoOx

Answers:


65

从错误中可以看出,FacebookSDK.framework已经包含Bolts.framework类。尝试从项目中删除其他的Bolts.framework。


22
如何?你可以请指导我一步一步
Imdad阿里

68

对我来说,这有助于将“ No Common Blocks”编译器设置切换为NO:这似乎很有道理,该设置在此处进行了解释: GCC_NO_COMMON_BLOCKS用于什么?


你是男人!刚制作了一个新的xCode 7.3.1项目,默认设置为YES :(
Yaro

4
Xcode的“将项目更新为建议的设置”窗口为我打开了此选项。
commscheck

你是最好的
showmyroutes '18

无价的小费,但在我的情况下,do对您没有帮助!:O
Fattie

49

使用Xcode 8,“将项目更新为建议的设置”选项为我的项目打开了“没有通用块”。

将其重新设置为OFF可修复所有问题。


2
将项目更新为推荐设置,我该怎么做?我的意思是从哪个菜单?
Sazzad Hissain Khan

@SazzadHissainKhan在您的构建设置中。
旅行


21

我在降级吊舱时弄乱了吊舱,并设法通过删除吊舱并再次安装它们来解决体系结构arm64重复符号的问题:

pod deintegrate
pod install

我使用的是通过CocoPods-3.9.0集成的Google Places SDK,此问题解决了我的问题。
andrewlundy

11

另一个解决方案是:

选择“ 项目” ->“ 目标” ->“ 构建阶段” ->“ 编译源” ->“搜索最后一个错误第三行中提到的文件”(在您的情况下为BFAppLinkReturnToRefererView.o)。

然后,您会在搜索结果中看到1个或2个文件。

删除其中之一,然后再次编译。现在应该重新编译,因为仅剩一个文件,没有更多的生成冲突。

如果这样不起作用,则文件中可能包含错误,您应该删除所有错误,然后重新编译。它应该再次工作。


2
答案被低估了,卢卡斯,谢谢您的帮助!:)
patreu22 '18 / 10/15

没问题,很高兴它解决了您的问题:)

10

升级到Xcode 8时,我收到一条消息,要求升级到推荐设置。我接受了,一切都更新了。我开始遇到编译时间问题:

XXXX的重复符号XXXX的重复符号XXXX的重复符号

总共143个错误。转到目标->构建设置->无通用块->将其设置为否。这解决了问题。问题在于集成项目具有共同的代码块,因此无法对其进行编译。可以在这里找到解释。


9

当链接器尝试链接obj文件时,会发生此错误。我能想到的这个错误的几个原因是:

  1. 复制的功能/类在项目中的两个不同的位置/文件中定义,并且对于构建命令的任何变体,仅其中一个应被编译。但是无论如何,这两个文件都已在您的项目中编译。因此,您需要检查if-else条件或其他依赖项,这会将src文件添加到需要编译的文件列表中,并删除特定构建命令不需要的文件。

  2. 在项目中的两个不同位置/文件中意外地定义了重复的功能/类。删除错误的定义。

  3. 在再次构建之前,请清理您的OBJ目录,以前的构建中可能包含一些旧的obj文件,这可能会导致此冲突。

附言:我不是专家,但这是我面对此问题时所解决的方法。:)


9

如果您要使用Xcode 7或8,并且正在打开一个非常老的项目,那么我会遇到此问题:

SomeConstFile.h

NSString * const kAConstant;

SomeConstFile.m

NSString *const kAConstant = @"a constant";

较早版本的编译器假定头文件中的定义是extern,因此在各处包含SomeConstFile.h都很好。

现在,您需要将这些const显式声明为extern:

SomeConstFile.h

extern NSString * const kAConstant;

1
谢谢你!我正在创建一个常数时遇到了与constants.h文件有关的问题
Sung Min Kim

1
谢谢您的回答,我也面临着同样的问题,您的回答对我
有用

1
谢谢,我在过去3-4小时内一直在为这个问题而苦苦挣扎
Sumit Kumar Saha

9

以下补丁为我工作.. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

将其设置回NO即可解决问题!


2
步骤2:解决了我的问题。谢谢您:)
Dorald '19

2

好吧,有时候使用FB之类的SDK或Vuforia或GoogleAnalytics之类的库时,添加示例项目可能会导致它们已经包含Framework之类的问题,因此您必须确保不要重复在它们已经添加时手动添加的符号样品中包括


2

对我来说,问题在于创建const的风格,在iOS8之前效果良好。.我有几行内容:

int const kView_LayoutCount = 3;

在我的.h文件中。一旦将公共块设置为NO,则六行这样的结果会导致636个链接器文件。(如果是,则为14k +)。除去值声明的.h之后,将行移至.m,可以进行编译了。

希望这对别人有帮助!


2

就我而言,原因太愚蠢了:

我有一个Constant.h文件,其中定义了宏。我想到在那里做NSString。并这样做:

NSString const *kGreenColor = @"#00C34E";

这导致体系结构arm64和链接器命令符号重复的问题,退出代码为1。删除const NSString行对我有用


2

检查您的包含文件,我遇到了这个问题,因为我不小心#import了“ filename.m”而不是“ filename.h”,自动更正(选项卡)放了一个“ m”而不是“ h”。


非常感谢,我没有意识到自己犯了这个错误,占用了我所有的时间。再次感谢👍
Supertecnoboff

1

从错误中可以看出,任何类都会多次出现。查找并删除将起作用的类。

我正在创建AppDelegate.h和.m文件,并创建了多个时间。因此会发生此错误。最后找到并删除了该类,对我来说很好。


1

要解决此问题,请转到构建阶段并搜索(facebookSDK,unityads)之类的重复文件并删除(扩展名file.o),然后再次构建。


0

对我来说,我sampleMethod在ViewController_A中创建了一个方法,并在ViewController_B中也创建了相同的方法,这导致了这个错误,然后我将ViewController_B中的方法名称更改为secondSampleMethod。它修复了错误。

似乎很不错的功能是减少代码,并且不要在很多地方重复相同的代码。

我尝试将No Common块从Yes更改为No,然后将可测试性从Yes更改为No。这没有用。我也在构建阶段检查了重复文件,但是没有重复文件。


0

之所以遇到这个问题,是因为我在方法之外的.m中懒洋洋地定义了一个变量,然后在另一个.m文件中,我在方法之外定义了另一个具有相同名称的变量。这导致了全局变量名重复的问题。


0

对我来说,问题是我手动添加了一个框架,但随后在CocoaPods中也包含了相同的框架,但我不知道这样做了。一旦删除一个或另一个,问题就消失了



0

我能够解决此错误,该错误为“体系结构armv7的158个重复符号,体系结构arm64的158个重复符号” ---如果这也是您得到的,则意味着您正在尝试编译正在导入的文件或继承引用了C ++代码或文件的框架或静态库。一种简单的处理方法是将.m文件的扩展名更改为.mm。如果您使用的是Objective C,则这是如何处理的,但是不确定在Swift上如何处理。

同样在构建设置中-您可以将“其他链接器标志”更新为-lc ++


0

如果有人正在尝试在Flutter上进行此操作,请不要尝试对Pod进行解集成,对Pod进行初始化。

我如何解决的是运行flutter clean,flutter run -d [iOS设备]

希望可以帮助别人。


0

请更改设置。

步骤1:转到TARGETS-> Build Settings-> No Common Blocks-> No

步骤2:转到TARGETS-> Build Settings->启用可测试性-> No

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.