如何解决此 "linker command failed with exit code 1 (use -v to see invocation)" 错误

How do I resolve this "linker command failed with exit code 1 (use -v to see invocation)" error

我已经有一段时间没有接触这个特定的应用程序了,但同时通过各种版本升级了 Xcode 到当前的 6.3。今天尝试构建它,构建失败,链接器命令失败,退出代码 1 错误...

duplicate symbol _timer in: /Users/johnbdh2/Library/Developer/Xcode/DerivedData/OrthoPro-cqfociuqwyhagkfczafenrdkthpw/Build/Intermediates/OrthoPro.build/Debug-iphoneos/OrthoPro.build/Objects-normal/armv7/OrthoViewController.o /Users/johnbdh2/Library/Developer/Xcode/DerivedData/OrthoPro-cqfociuqwyhagkfczafenrdkthpw/Build/Intermediates/OrthoPro.build/Debug-iphoneos/OrthoPro.build/Objects-normal/armv7/NewMechanicDialogViewController.o

duplicate symbol _timer in: /Users/johnbdh2/Library/Developer/Xcode/DerivedData/OrthoPro-cqfociuqwyhagkfczafenrdkthpw/Build/Intermediates/OrthoPro.build/Debug-iphoneos/OrthoPro.build/Objects-normal/armv7/OrthoViewController.o /Users/johnbdh2/Library/Developer/Xcode/DerivedData/OrthoPro-cqfociuqwyhagkfczafenrdkthpw/Build/Intermediates/OrthoPro.build/Debug-iphoneos/OrthoPro.build/Objects-normal/armv7/MechanicsViewController.o

ld: 2 duplicate symbols for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我在 Whosebug 和其他地方发现了许多关于链接器错误的参考资料,但到目前为止 none 已经帮助我弄清楚如何解决我的特定问题。

错误说我有两次 重复符号 _timer,但是在项目中查找 _timer 没有找到任何东西。

我确实在所有提到的 ViewController 中声明并使用了 NSTimer *timer,但没有 _timer。

如有任何帮助,我们将不胜感激。

约翰

方法名称有一个由编译器添加的前导下划线前缀,因此链接器中的 _timer 指的是程序中的 timer

此外,链接器消息说它在文件 OrthoViewController.o 和 NewMechanicDialogViewController.o 中,因此变量 timer 在这两个文件中都有各自的源文件 *.m 并且可能在文件级别。

timer 也在 MechanicsViewController.o.

然后创建实例变量,或者如果有某些原因需要将它们放在文件范围内,则创建它们 static.

如果您需要更多帮助,请添加声明变量 timer 的代码。

看起来 MechanicsViewController.o 和 NewMechanicDialogViewController.o 之间可能存在冲突,也许你只想在你的程序中使用其中一个。

最后,阅读错误消息并尝试理解它们以及它们如何应用于您的代码。

我用这段代码造成了这个错误。

protocol var somethingDelegate: class
{
    var position: CGPoint { get set }
}

这是 SKScene 子类要遵循的协议。 SKScene 在它的超类中已经有一个位置 属性。我删除了这段代码,它是固定的。因此,问题可能出在重复/冲突的属性上。