当我在添加自己的框架后尝试构建项目时,在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)
提前致谢..
最佳答案
这些符号在crt.o(标准C库的启动代码)中。通常,它应该是可执行文件的入口点,用于初始化全局变量和对象。它还将调用您的主要功能。
但是对于框架,您不应该在二进制文件中包含它,因为框架不应该包含main。
我相信您在框架的目标build设置中将“与标准库链接”选项设置为"is"。这会将crt.o链接到您的框架。当您将框架链接到项目中时,将出现重复的符号。
请在您的build设置中将“与标准库链接”选项设置为“否”。
关于xcode - Xcode中的重复符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367793/