Xcode中重复的符号错误

use*_*410 8 xcode symbols compiler-errors duplicates

当我在添加自己的框架后尝试构建项目时,我在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)
Run Code Online (Sandbox Code Playgroud)

提前致谢..

小智 15

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


kuu*_*dor 8

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

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

请在构建设置中将"标准库链接"选项设置为"否".

  • 当我这样做时,我得到更多错误:架构x86_64的未定义符号:... (8认同)
  • 当我在构建设置中将标准库链接设置为no时,我得到177个编译器错误而不是1 (2认同)

小智 6

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

您可以通过多种方式完成此操作:

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

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

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

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