iOS开发之duplicate symbols for architecture x86_64错误

iOS开发之duplicate symbols for architecture x86_64错误

【主要内容:】

 

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>  

 

如图:

iOS开发之duplicate symbols for architecture x86_64错误

 

 

 

二、分析错误原因

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

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

 

 

 

三、解决问题办法

 

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

 

3.1 重复导入相同的文件

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

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

iOS开发之duplicate symbols for architecture x86_64错误

 

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

iOS开发之duplicate symbols for architecture x86_64错误

 

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

 

 

3.2 #import “XXX.h” 写成了#import “XXX.m”

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

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

iOS开发之duplicate symbols for architecture x86_64错误

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

iOS开发之duplicate symbols for architecture x86_64错误

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

 

 

 

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

 

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

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101673.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 《JavaScript 模式》读书笔记(6)— 代码复用模式2「建议收藏」

    上一篇讲了最简单的代码复用模式,也是最基础的,我们普遍知道的继承模式,但是这种继承模式却有不少缺点,我们下面再看看其它可以实现继承的模式。四、类式继承模式#2——借用构造函数本模式解决了从子构造函

  • python数组-1成员_python[1,2,3]*3

    python数组-1成员_python[1,2,3]*3使用python版本3.7首先先了解下python3.7中的下标,python下标有两套,一套是正的,一套是负的a=’python’中的python的下标可以如下组python正下标012345负下标-6-5-4-3-2-1对应位置的正下标-负下标=len(a)使用正下标时,下标i………………………

  • 配置JAVA_HOME「建议收藏」

    配置JAVA_HOME「建议收藏」配置JAVA_HOME1、新建系统环境变量JAVA_HOME变量值为C:\ProgramFiles\Java\jdk-12.0.12、编辑Path添加%JAVA_HOME%\bin3、新建系统环境变量CLASSPATH,变量值为.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar1、新建系统环境变量JAVA_HOM…

  • java对象转json字符串方法_java json字符串转对象

    java对象转json字符串方法_java json字符串转对象当学习如何编写基于Java的软件时,开发人员遇到的第一个障碍就是如何将其代码与其他软件连接。这通常是JSON的来源。尽管您可能是Java向导,但JSON是另一种动物。无论如何,这篇博客文章解释了完成工作所需的一切。Java对象是数据和处理可用数据的过程的组合。对象既有状态又有行为。在Java中,使用关键字“new”创建对象。对象是从称为类的模板创建的。…

  • AssemblyInfo.cs文件参数具体讲解「建议收藏」

    AssemblyInfo.cs文件参数具体讲解「建议收藏」AssemblyInfo.cs文件参数具体讲解原文地址:https://www.cnblogs.com/scy251147/archive/2010/10/23/1859576.html

  • 【Java】Java四舍五入保留1位小数、2位小数…

    【Java】Java四舍五入保留1位小数、2位小数…Java四舍五入保留1位小数的方法:importjava.math.BigDecimal;publicclassTest{publicstaticvoidmain(String[]args){doubled1=3.02;System.out.println(d1);//利用字符串格式化的方式实现四舍五入…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号