duplicate symbols for xxx

  • 错误原因1:一般就是项目里面引用了两次相同的文件/文件夹,如下图所以
Snip20161115_41.png
  • 错误如下:
Snip20161115_42.png
  • 解决方法1:
    1.根据下图步骤找到重复引用的文件
Snip20170111_62.png

2.选中其中一个你想要去掉的文件/文件夹,按快捷键:command + delete然后会弹出一个窗口,点击“Remove References”按钮即可。

Snip20161115_40.png

  • 错误原因2:
    笔者出现这个错误的原因是因为在pch文件中写了下面这行代码.
/** 存放当前位置信息的字典 */
NSMutableDictionary *localLocationInfoDict;

解决方法:在数据类型前面加上extern,如下:

/** 存放当前位置信息的字典 */
extern NSMutableDictionary *localLocationInfoDict;

这样就不会报错了,但是如果使用过程中给这个变量赋值,还是会报错,笔者也不知道怎么办,干脆把这行代码给删除了.另想其他方法吧.


  • 错误原因3:

如果你的项目出错的原因不是错误原因1,也不是错误原因2,那么就只能放大招了.

解决方法,步骤如下:
提示:这个解决方法会将上次commit之后写的所有代码全部抹去。也就是说,上次提交代码之后所写的代码全没了,等于白写了。

  • 1.选中项目,如下图:
Snip20170111_54.png
  • 2.点击Source Control
Snip20170111_56.png
  • 3.点击Discard All Changes...
Snip20170111_57.png
  • 错误原因4

可能你创建了一个跟以前文件同名的类,如下图

Snip20170217_38.png

错误原因5
  • 在不同的文件定义了两个同名的全局变量。例如
// 在A类中有下面全局变量
NSInteger numberOfItems = 3;

// 在B类中又有一个同名的全局变量
NSInteger numberOfItems = 6;

那么这个时候就会报这个错误,解决方法就是在两个全局变量的最左边加上static就可以。


错误原因6
  • 看看你的build phases->Link Binary With Libraries中,是否有哪些框架变白色了,如果有的话,删除重新导入即可。
    解决这个问题不能光是看红色报错文字,还要看一下黄色警告,它能提供一些有用信息,这个问题我就是这么解决的。

错误原因7
  • 错误截图如下:
Snip20171009_2.png
  • 看看是不是一不小心把xxxTests.m或xxxUITests.m文件给添加到项目的Compile Sources中去了。有的话删除即可。
Snip20171009_5.png
错误原因8
  • 报此错误前,是不是又导入框架,可能是框架冲突(即存在两个相同 的框架)
错误原因9
  • 全局变量没有使用static修饰
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容