为什么我会遇到这个特定的Mach-O链接器问题



我已经查看了SO上的所有Mach-0 Linker问题,但找不到任何似乎特定于我的问题的问题。我的应用程序在调试器中编译了数周而没有问题,这似乎是出乎意料的。问题似乎指向两个源文件(keypad.o 和 setoutput.o(。以前的Mach-O错误通常告诉我,某某不能从"某个文件".o中引用,但在这种情况下没有这么简单的线索。错误如下所示:

ld "/Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Products/Debug/MacOS Cover.app/Contents/MacOS/MacOS Cover" normal x86_64
cd "/Users/Administrator/Desktop/MacOS Cover"
setenv MACOSX_DEPLOYMENT_TARGET 10.6
/Developer/usr/bin/clang -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -L/Users Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Products/Debug -F/Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Products/Debug -filelist "/Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Intermediates/MacOS Cover.build/Debug/MacOS Cover.build/Objects-normal/x86_64/MacOS Cover.LinkFileList" -mmacosx-version-min=10.6 -framework Cocoa -o "/Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Products/Debug/MacOS Cover.app/Contents/MacOS/MacOS Cover"
ld: duplicate symbol _required in /Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Intermediates/MacOS Cover.build/Debug/MacOS Cover.build/Objects-normal/x86_64/keypad.o and /Users/Administrator/Library/Developer/Xcode/DerivedData/MacOS_Cover-aemdqkcjvuomtjfhkycsyowsgisn/Build/Intermediates/MacOS Cover.build/Debug/MacOS Cover.build/Objects-normal/x86_64/setoutput.o for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Command /Developer/usr/bin/clang failed with exit code 1

我尝试扔掉所有派生的数据文件等(它们似乎在一秒钟后立即弹回(。如果有人能帮助我解决这个问题,我将不胜感激。

这两个

目标文件分别导出一个具有相同名称的符号(required;下划线是编译器的工件(。根据您对这两个的确切意图,您可能需要:a( 重命名一个或两个;或b(使一个或两个具有内部链接,通常将它们标记为static

您很有可能认为只有一个这样的符号,因为您在两个源文件都包含的标头中声明了它。但是,您可能无意中定义了标头中的符号,而不仅仅是声明它。然后,在包含它的每个源文件中定义它。您必须显示源代码以及required的声明/定义以及它如何引入每个源文件。

最新更新