Xcode中重复的符号错误

时间:2013-01-16 21:04:00

标签: xcode compiler-errors duplicates symbols

当我在添加自己的框架后尝试构建项目时,我在Xcode 4.5.1中遇到“重复符号”错误。我验证了重复项的框架文件,但没有。但是当我将框架添加到项目中时,它会抱怨这些错误。请建议..

duplicate symbol _NXArgc in:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW

duplicate symbol _NXArgv in:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW

duplicate symbol ___progname in:
  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW

duplicate symbol _environ in:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW

duplicate symbol start in:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW
ld: 8 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

提前致谢..

5 个答案:

答案 0 :(得分:15)

使用两个第三方框架时遇到了同样的问题。我通过在构建设置中从“Other Linker Flags”中删除“all_load”来解决这个问题。

答案 1 :(得分:8)

这些符号位于标准C库的启动代码crt.o中。通常,它应该是可执行文件的入口点,以初始化全局变量和对象。它也会调用你的主要功能。

但对于框架,您不应该将它包含在二进制文件中,因为框架不应该包含main。 我相信您在框架的目标构建设置中将“链接标准库”选项设置为“是”。这会将crt.o链接到您的框架中。当您将框架链接到项目时,将会有重复的符号。

请在构建设置中将“标准库链接”选项设置为“否”。

答案 2 :(得分:5)

您的应用程序提供了一个实现,其中有8个重复符号。

您可以通过多种方式完成此任务:

您有两个模块声明同一个类。也许不再需要一个?

您正在导入.m和.h中的任何头文件:(从一个地方删除。)

您正在某处导入任何.m文件。 : - (导入.h文件而不是.m文件)

您已在任何.h文件的外部(上方)@interface {}中定义并声明了任何const变量,它可能是重复的。 : - (在.m文件中执行。)

答案 3 :(得分:1)

同时检查是否在应用程序的.h文件中正确定义了常量等全局变量。

定义全局变量的正确方法是在extern文件中使用.h变量。

注意:这不是以前的Xcode版本的问题。我遇到了Xcode 6.3的问题并且它已经解决了。

答案 4 :(得分:0)

如果只有在模拟器中运行应用程序时出现此问题,则通过删除本地文件夹解决此问题

~/Library/Developer/CoreSimulator

Xcode将在第一次构建和运行后恢复它。 请在执行此操作之前确认您备份任何设置(特别是与模拟器设备相关的设置)。

在Xcode V7.2.1(7C1002)

上测试