建筑标志重复64

当我尝试运行我的 Xcode 项目时,它失败了,错误指出我有重复的符号。我在网上找到了这些复制品,但一无所获:

enter image description here

有办法解决吗?

148574 次浏览

从这些错误来看,似乎 FacebookSDK.Framework 已经包含了 Bolts.Framework 类。尝试从项目中删除额外的 Bolts.Framework。

好吧, 有时候当使用像 FB 或者像 Vuforia 或者 GoogleAnalytics 这样的库的 SDK 时,添加示例项目可能会导致他们已经包含了框架之类的问题,所以你必须确保当他们已经包含在示例中的时候不要重复你手动添加的符号

对我来说,它有助于将“ NO Common Block”编译器设置切换为 NO: 这似乎很有道理,设置在这里解释: GCC _ NO _ COMMON _ BLOCKS 用于什么?

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

  1. 重复的函数/类在项目中的两个不同位置/文件中定义,其中只有一个应该针对构建命令的任何变体进行编译。但不知怎么的,这两个文件都在你的项目中被编译了。因此,您需要检查 if-else 条件或其他依赖项,这些依赖项将 src 文件添加到需要编译的文件列表中,并删除特定构建命令不需要的文件。

  2. 在项目中的两个不同位置/文件偶然定义了重复的函数/类。

  3. 在你再次构建之前清理你的 OBJ 目录,可能有一些旧的 OBJ 文件在那里从你以前的构建可能会导致这种冲突。

另外,我不是专家,但是当我面对这个问题的时候,我就是这样解决的:)

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

正在创建 AppGenerate.h 和。多次创建 m 文件。所以会出现这个错误。最终找到并删除了那些对我来说工作良好的类。

对我来说,是我错误地导入了一个文件作为一个. m 而不是一个. h

使用 Xcode 8,“将项目更新为推荐设置”选项为我的项目打开“无公共块”。

把它调回关机状态,一切都恢复正常了。

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

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

总共有143个错误。 转到目标-> 构建设置-> 没有公共块-> 设置为否。 这解决了问题。问题是,集成项目有共同的代码块,因此无法编译它。解释可以找到 给你

对我来说,问题在于 const 的创建风格,在 iOS8之前,const 一直运行良好。.我有几句台词是这样的:

int const kView_LayoutCount = 3;

在我的。H 档案。一旦公共块设置为 NO,就会产生636个链接器文件。(如有,14k +)。把线移到。我脱完衣服后。H 的值声明和编译工作进行得很顺利。

希望这对其他人有所帮助!

如果您正在转向 Xcode 7或8,并且正在打开一个非常老的项目,那么我遇到了这个问题:

SomeConstFile.h

NSString * const kAConstant;

SomeConstFile.m

NSString *const kAConstant = @"a constant";

早期版本的编译器假设头文件中的定义是 extern,因此包含 Some ConstFile.h 是可以的。

现在您需要显式地将这些常量声明为 extern:

SomeConstFile.h

extern NSString * const kAConstant;

下面的补丁为我工作. . :)

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


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

设置为 NO 解决了这个问题!

为了解决这个问题,需要进入构建阶段,搜索重复的文件 喜欢(facebookSDK,unityads)和删除(扩展文件) ,然后再次构建。

就我而言,理由太愚蠢了:

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

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

这就导致了建筑物的重复符号问题 Linker 命令失败,退出代码为1。 < strong > 删除 const NSString 行对我来说很有用。

检查你的包含文件,我有这个问题,因为我不小心 # 导入“ filename.m”而不是“ filename.h”,自动更正(tab)把一个“ m”而不是“ h”。

另一个解决办法是:

选择 工程项目-> 目标-> 建造阶段-> 编译源代码-> search 对于在最后一个错误行中提到的文件(在您的 案例 BFAppLinkReturn 到 RefererView.o)。

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

删除 其中一个和 再次编译。现在应该重新编译,因为只剩下一个文件,而且没有更多的构建冲突。

如果这不工作的文件可能有错误,你应该删除所有的,然后重新编译。 应该又能用了。

对于我来说,我在 ViewController _ A 中创建了一个名为 sampleMethod的方法,在 ViewController _ B 中也创建了相同的方法,它导致了我这个错误,然后我将 ViewController _ B 中的方法名改为 secondSampleMethod。修正了错误。

这似乎是一个很好的特性,可以减少代码,并且不会在很多地方重复相同的代码。

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

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

对我来说,问题是我手动包含了一个框架,但是在 CocoaPods 中也包含了同样的框架,而我并不知道我这样做了。一旦我移除了其中一个,问题就解决了

我在降级一个吊舱的时候弄乱了我的吊舱,我已经设法通过移除吊舱并重新安装它们来解决 架构臂64的重复符号的问题:

pod deintegrate
pod install

我能够解决这个错误,即“架构 armv7的158个重复符号,架构 arm64的158个重复符号”——如果这也是你正在得到的,那么这意味着你正在尝试编译一个文件,它正在导入或继承一个框架或静态库引用 C + + 代码或文件。处理这个问题的一个简单方法是更改。文件。嗯。这是如何处理它,如果您使用的目标 C,但不确定在 Swift。

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

如果有人正在试验这种扑动工作,不要试图分解,豆荚 init。

我是如何解决运行颤振干净,颤振运行 D [ iOS 设备]

Hope 可以帮助别人。

请更改设置。

第一步: 转到目标-> 建立设置-> 没有公共块-> 没有

步骤2: 转到目标-> 构建设置-> 启用可测试性-> 否

我得到这个问题时,我有两个文件,有相同的名称在事故(大型项目,哎呀!)

具有讽刺意味的是,他们实际上是相同的文件,我只是忘记了我已经创建了一个作为占位符周前,并给它相同的名称再次,哈哈!

在 Xcode 使用 command + shift + k 进行缓存清理

我的问题是,我有多个文件同名,所以我删除了重复的文件,在控制台,你可以看到文件名 Hope 可以帮助别人。

密码

  • CrifanLibiOS.h
const int OPEN_OK = 0;
  • CrifanLibiOS.m
#import "CrifanLibiOS.h"
...
// use the const int value
if (OPEN_OK == openResult){

以及:

  • 包括其他对象文件
    • openFileViewController.m
#import "CrifanLibiOS.h"

错误

ld: 6 duplicate symbols for architecture arm64

原因

多次导入 CrifanLibiOS.h,多次重新定义 const int

解决方案

对于目标,const变量应改为:

  • xxx.m中的实施
    • CrifanLibiOS.m
#import "CrifanLibiOS.h"


const int OPEN_OK = 0;


...
// use the const int value
if (OPEN_OK == openResult){
  • xxx.h中的声明 ,必须具有 < strong > extern
    • CrifanLibiOS.h
extern const int OPEN_OK;

我正在做我的教程,然后我把答案分成不同的文件,并不意味着把它们关联起来做一个大程序。

我没有解决这个问题,直到我 注释掉“ main.cpp”文件的其余几行确保程序可以单独运行没有它的影响。

我不是很确定它的原理,但我认为它 实际上可能是由多个“ main.cpp”文件的冲突引起的。

只是一个一年级学生的一个小发现,希望能帮到某人。

在改变依赖版本之后,我在 Flutter 项目中得到了这个版本:

pod deintegrate
flutter clean
pod install

当您通过 Swift Package Manager 安装 FireBaseAnalytics 和通过 CocoaPods 安装 Google AdMobs SDK 时,会面临这个问题,这是由官方文档指导的。最终得到的是复制的库。

我的解决方案是通过 CocoaPods 安装 FireBaseAnalytics 和 GoogleAdMobs SDK。

对我来说,这是因为全局变量。 有一个类有一个全局变量,比如:

CGFloat cellHeight = 65;

我建立了一个新的类,它没有连接到第一个类,它也得到了相同的变量。也就是说:

CGFloat cellHeight = 80;

因此,问题出现了。 解决方案是添加一个 static来修改它,这样它就可以正常工作了。

static CGFloat cellHeight = 80;