15、iOS开发之duplicate symbols for architecture x86_64错误

1. 错误提示

2. 分析错误原因

3. 解决问题办法

 

一、错误提示

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

 

[objc] view plaincopy
print?
  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的错误。

3.4 使用CoreData数据库时候

 

 

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

 

转载于:https://www.cnblogs.com/wn-blog/p/7162110.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【死磕Java并发】----- 死磕 Java 并发精品合集

【死磕 Java 并发】系列是 LZ 在 2017 年写的第一个死磕系列&#xff0c;一直没有做一个合集&#xff0c;这篇博客则是将整个系列做一个概览。 先来一个总览图&#xff1a; 【高清图&#xff0c;请关注“Java技术驿站”公众号&#xff0c;回复&#xff1a;脑图JUC】 【死磕Java…

vs官方使用教程中文版与英文版

Visual Studio IDE 中文文档 https://docs.microsoft.com/zh-cn/visualstudio/ide/ Visual Studio IDE documentation https://docs.microsoft.com/en-us/visualstudio/ide/

linux subsys_initcall

宏定义__define_initcall(level,fn)对于内核的初始化很重要&#xff0c;他指示编译器在编译的时候&#xff0c;将一系列初始化函数的起始地址值按照一定的顺序放在一个section中。在内核初始化段&#xff0c;do_initcalls() 将按顺序从该section中以函数指针的形式取出这些函数…

vue transition

Vue.js 教程 (9) : 过渡动画 Vue.js 提供非常简单的过渡动画接口。这些过渡动画在 Vue.js 将目标元素插入或移除出 DOM 的时候会自动执行。能够触发动画的指令包括 v-if , v-show 和 v-repeat。同时&#xff0c;vm 实例的 $appendTo() , $before() , $after() 和 $remove() 方法…

VS扩展工具

原文发布时间为&#xff1a;2011-03-09 —— 来源于本人的百度文章 [由搬家工具导入]http://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.TypeRootCategory&f%5B0%5D.Valuetools转载于:https://www.cnblogs.com/handboy/p/7163982.html

工业相机5A参数及其对图像采集的影响

有些相机会提到5A功能&#xff0c;指的是: Automatic Shutter(自动快门)、Automatic Gain&#xff08;自动增益&#xff09;、Automatic IRIS&#xff08;自动光圈&#xff09;、Automatic Gamma&#xff08;自动伽马&#xff09;、Automatic White Balance&#xff08;自动白平…

DM6446 OSD

DM6446 OSD TMS320DM6446支持背景窗颜色&#xff0c;两个视频窗口&#xff0c;两个OSD窗口&#xff0c;一个指针(cursor)窗口。它们以递增的顺序排列&#xff1a;一个特有的第二个OSD窗口&#xff08;OSDWIN1&#xff09;可以用来配置成属性窗口来控制视频窗口和第一个OSD窗口&…

DOS的一些常用命令

原文发布时间为&#xff1a;2011-02-12 —— 来源于本人的百度文章 [由搬家工具导入]DOS远程桌面连接命令 mstsc /v: 192.168.1.250 /consolecmd 运行 command删除文件 rd 文件名/S创建文件 MD 文件名 1. net user admin godmour /add 新建一个…

机器视觉工业镜头-Computar

日本Computar镜头&#xff0c;全球工业镜头、CCTV镜头市场占有率第一。CBC板式会社成立于1925年&#xff0c;总部在日本东京。1960年 CBC香港公司成立&#xff0c;是computar镜头走向国际市场的前奏。 1979年 研制出第一只手动变焦镜头。 1985年 研制出第一款非球面高速镜头。1…

C++编程经验总结1

面向对象的精髓&#xff1a; 主函数其实就是对于类的元素和动作的重新组合来进行一项活动。 一个思想概念&#xff1a;程设是清楚的&#xff0c;完美的。 数学是清楚的&#xff0c;是完美的。 物理是有趣的&#xff0c;尤其是量子物理 生物是清楚的&#xff0c;尤其是基因 外语…

DM365的BSP源码分析-基于2.6.18内核

DM365的BSP主要包含mach-davinci和plat-davinci两个目录&#xff08;及相关头文件&#xff09;&#xff0c;BSP复杂庞大又极其重要&#xff0c;它主要完成了板级的初始化&#xff0c;比如内存映射&#xff0c;时钟和电源初始化&#xff0c;中断和IO初始化&#xff0c;CPU及各模…

第四章:Django 模型 —— 设计系统表

1. Django框架提供了完善的模型&#xff08;Model &#xff09;层来创建和存储数据&#xff0c;每一个模型对应数据库中的唯一的一张表。 2. Django 模型基础知识&#xff1a; 。每一本模型是一个Python类&#xff0c;继承了django.db.models.Model类 。该模型中每一个属性一个…

DM365 使用BT656协议驱动LCD的实现

前两天已经调好了&#xff0c;主要是对davinci_platform.c的修改 因为输入输出都为pal的制式&#xff0c;所以就在pal的函数中进行了修改。 在PAL设置的函数中&#xff0c;修改如下&#xff1a; /* * setting PAL mode */ static void davinci_enc_set_pal(struct vid_enc_mode…

工业视觉镜头NAVITAR

品牌介绍 美国NAVITAR是优越的上等光学系统制造商和供应商&#xff0c;工业视觉镜头NAVITAR为机器视觉、检测和生物医学诊断行业提供的定制光学解决方案。 工业视觉镜头NAVITAR用于鉴定产品、检查产品缺陷、测量零件尺寸、操纵机器人设备和协助进行科学分析与探索。 还用来引导…

TCP系列48—拥塞控制—11、FRTO拥塞撤销

一、概述FRTO虚假超时重传检测我们之前重传章节的文章已经介绍过了&#xff0c;这里不再重复介绍&#xff0c;针对后面的示例在说明两点1、FRTO只能用于虚假超时重传的探测&#xff0c;不能用于虚假快速重传的探测。2、延迟ER重传触发的进入Recovery状态时候&#xff0c;并不会…

娱乐一下

6年前&#xff0c;没几个人知道尤里米尔纳&#xff08;Yuri Milner&#xff09;是谁。但今天&#xff0c;他已经是地球上最有名的投资人了。 短短几年内&#xff0c;这家伙掌管的风险投资基金DST&#xff08;数字天空科技&#xff09;投遍了全球的互联网明星企业&#xff0c;并…

机器视觉行业市场现状及发展前景分析

1.中国的机器视觉起步较晚&#xff0c;目前正处于快速增长期。 我国机器视觉最早起源于20世纪80年代。机器视觉生产线和先进设备自1998年众多电子、半导体企业落户广东、上海以来&#xff0c;先后在国内诞生了国际代理商和机器视觉系统集成商。 第一个阶段是1999-2003年的启蒙…

从bootm 命令讲起/U-boot的环境变量: bootcmd 和bootargs

从bootm 命令讲起 1 找到linux的内核入口 Bootm命令通过读取uImage的头部040字节的信息&#xff0c;将uImage定位到正确的地址&#xff0c;同时找到linux的内核入口地址。 这个地方就涉及到uImage的头部040字节信息到底是什么的问题?uboot提供了mkimage命令去把040字节加在lin…

关于创建SWAP示例

cd /data 进入指定目录dd if/dev/zero of/data/swapfile bs1M count102400【参数说明】if文件名&#xff1a;输入文件名&#xff0c;缺省为标准输入。即指定源文件。< ifinput file >of文件名&#xff1a;输出文件名&#xff0c;缺省为标准输出。即指定目的文件。< of…