duplicate symbols for architecture x86_64

来源:互联网 发布:推荐美图软件 编辑:程序博客网 时间:2024/05/21 15:41

出现这个问题主要有一下几种原因:

1、项目使用CocoaPods管理后,没有删除之前手动引入的文件。

引入CocoaPods还需要在项目target中的build setting中的other flags加入$(inherited)。在framework search path和Library search path中也加入$(inherited),删除其他的条目。

2、在文件中引入了.m文件,本来应该是需要引入.h文件。

3、Remove -ObjC from Other Linker Flags or Please check you imported any .m file instead of .h by mistake.

4、今天在项目里拖进了一个第三方SDK的源码,项目编译时fail,错误信息是duplicate symbols for architecture arm64。百度半天无果,只能询问SDK开发的小伙伴,告诉我需要修改Build Settings里的No Common Blocks为NO。No Common Blocks的Quick Help信息如下:

GCC_NO_COMMON_BLOCKS 
In C, allocate even uninitialized global variables in the data section of the object file, rather than generating them as common blocks. This has the effect that if the same variable is declared (without extern ) in two different compilations, you will get an error when you link them. 
[GCC_NO_COMMON_BLOCKS, -fno-common]

原来是在这个SDK里有的头文件声明了公共变量,然后在另外几个文件里import了这个头文件,No Common Blocks默认为YES,编译器就报错了。

0 0
原创粉丝点击