芒果iOS开发之duplicate symbols for architecture x86_64错误

el/2024/2/25 22:09:44

【主要内容:】


1. 错误提示

2. 分析错误原因

3. 解决问题办法



一、错误提示


在我们写代码过程中可能会经常遇到这样一个错误:

[objc]  view plain  copy
  1. <span style="font-size:32px;color:#ff0000;">ld: 4 duplicate symbols for architecture x86_64  
  2. clang: error: linker command failed with exit code 1 (use -v to see invocation)</span>  

如图:




二、分析错误原因

仔细读一下报错原因可以发现几个关键词:"duplicate"和"symbols"。

duplicate的中文意思是重复的复制的”,而symbols的意思是“符号”。也就是可能在你工程中引入了重复的东西。


三、解决问题办法


我总结了一下,出现duplicate出这个错误一般有三种情况:


3.1 重复导入相同的文件

   第一种情况:在工程中重复导入了某一个类或文件,这一般出现在你添加第三方库的时候比较多,在不知道的情况下又导入了一次相同的类。

   下图中我在工程中新建了一个src的文件夹,把Person类又复制了一遍又添加到工程中去,如图:



这个时候command + B编译之后出现如下错误:



 可以看出来报的还是duplicate的错误,虽然duplicate前边的数字可能不太准确,可是只要你看到duplicate这个关键字就可以去你工程中查找是不是有重复的东西被导入。


3.2 #import "XXX.h" 写成了#import "XXX.m"

  第二种情况:工程中在#import引入头文件的时候,将#import "XXX.h" 写成了#import "XXX.m"。错误的引入.m头文件 

我工程中有一个Person的类,然后我想在main函数中初始化一个对象,这个时候需要先引入Person类的.h文件。这个时候我引入了.m文件,如图:


    command + B 编译之后发现错误,如图:


你会发现还是duplicate这个错误。


3.3 在多个文件中重复定义某个东西

这个是由网友提供,错误原因如下:在两个文件中定义了相同的枚举,造成了deplicate的错误。


目前我只发现这三种操作会带来这个问题,其他的如果还会带来这个问题,欢迎大家提出来,帮我不断完善博客。



http://www.ngui.cc/el/4893968.html

相关文章

面试资料整理(整理中~)

1.介绍下内存的几大区域&#xff1f; 栈区,堆区,静态区(全局区),常量区,代码区 动态数据区一般就是”堆栈”,栈是线性结构,堆是链式结构. 本地变量在堆栈中.通过堆栈的基地址和偏移量来访问本地变量 动态内存分配有系统根据程序需要即时分配,且分配的大小就是程序要求的大小. …

ios 申请企业(299$)开发者账号2017

2018,最近申请企业开发者账号,总结一下流程: 一、Apple开发者账号分类: 除了给教育机构专门使用的教育账号外,Apple开发者账号分为以下三类: 个人账号: (Individual) 个人申请,不需要公司资质,仅限个人使用,可以发布应用到App Store,费用$99一年。 公司账号:Comm…

iOS解决应用被拒:5.1.1 Legal: Privacy - Data Collection and Storag

一、Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage 被拒原文 应用程序请求用户同意访问相机和位置&#xff0c;但没有在权限模式警告中明确该功能的使用。相机、定位使用场景提示文本不够明确&#xff0c;需提示用户为何打开此功能 2017年12月8日 上午5:5…

ios 9 statusBar style

状态栏的相关设置(UIStatusBar) 设置statusBar的【前景部分】 简单来说&#xff0c;就是设置显示电池电量、时间、网络部分标示的颜色&#xff0c; 这里只能设置两种颜色&#xff1a; 默认的黑色&#xff08;UIStatusBarStyleDefault&#xff09;白色&#xff08;UIStatusBar…

UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)

在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求。 第一种方式是通过设置按钮中图片文字的偏移量。通过方法setTitleEdgeInsets和setImageEdgeInsets实现 代码如下&#xff1a; /*!**方式一***/ - (void)updateBtnStyle_rightImage:(UIButton *)btn {CGFloat btnI…

iOS 12.2(16E227)真机调试包

手机系统更新到12.2&#xff0c;发现手机无法进行真机调试了&#xff0c;我又不想下载最新版本的Xcode。看到Xcode提示缺少iOS 12.2(16E227) 调试包&#xff0c;于是就去网上找了找资源。 提示&#xff1a;This iPhone 8 (Model A1863, A1905, A1906, A1907) is running iOS 1…

Word添加参考文献(删除调整后文献序号自动更新)

转一个百度链接 链接&#xff1a;https://jingyan.baidu.com/article/91f5db1b63215c1c7f05e3af.html 超级详细的

**损失函数nll_loss**

https://www.gentlecp.com/articles/874.html ↑↑↑有详细说明↑↑↑ nll_loss 函数接收两个tensor第一个是模型的output&#xff0c;第二个是label target&#xff0c;output中每一行与一个标签中每一列的元素对应&#xff0c;根据target的取值找出output行中对应位置元素&a…

**Pytorch中的model.train()和model.eval()**

- model.train() 相当于训练train阶段的一个初始化 设置Batch Normalization 和Droupout为真True Batch Normalization: 设置输入到神经网络的每一个batch具有相同的格式 Droupout&#xff1a;防止过拟合 - model.eval() 相当于测试test阶段的一个初始化 设置Batch Normaliz…