【问题标题】:Linking error while compiling编译时链接错误
【发布时间】:2012-08-01 10:48:58
【问题描述】:

我有 iOS 应用程序,当我尝试构建我的项目时,XCode 给我这个错误:

linker command failed with exit code 1 (use -v to see invocation)

发生了什么事?我应该如何解决这个问题?

错误:

ld: duplicate symbol _OBJC_CLASS_$_TrackInfo in /Users/Development/Library/Developer/Xcode/DerivedData/turbomusic-ezqahcxcowedlgaylyjxqdieywsn/Build/Intermediates/turbomusic.build/Debug-iphonesimulator/turbomusic.build/Objects-normal/i386/PlayerView.o and /Users/Development/Library/Developer/Xcode/DerivedData/turbomusic-ezqahcxcowedlgaylyjxqdieywsn/Build/Intermediates/turbomusic.build/Debug-iphonesimulator/turbomusic.build/Objects-normal/i386/turbomusicAppDelegate.o for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

  • 其余的错误是什么? (它应该在那之前打印了几行。)
  • 正如@PhillipMills 已经说过的,你需要在这里给我详细信息。由于这只是错误消息的一部分,我们无法提供帮助。您很可能没有在构建中包含框架,或者您没有正确链接外部库。但在没有更多信息的情况下,这是现阶段的猜测工作。

标签: ios xcode build compilation linker


【解决方案1】:

turbomusicAppDelegate.mPlayerView.m 都声明了一个名为 TrackInfo 的类。这可能是因为您在两个文件(或它们包含的头文件)中都有该类的实际副本,或者您在两个文件中都包含包含 TrackInfo 的标头而不使用包含保护,在这种情况下它可能更好使用#import 指令而不是#include 指令,因为编译器确保在您使用#import 时只包含一次标头。

【讨论】:

  • 我不使用 #include 并且在我的 turbomusicAppDelegate.m 中没有任何地方的 TrackInfo ((
  • @EugeneTrapeznikov 好吧,链接器确实在两个文件中都找到了 TrackInfo 类的副本。如果不查看源代码,很难猜出确切的问题是什么以及它在哪一行,但是现在您知道导致错误的原因,您可能可以自己追踪它。否则,您需要使用更相关的源代码编辑您的问题,以便我们为您提供进一步帮助。
猜你喜欢
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-01-14
  • 2014-02-26
  • 1970-01-01
相关资源
最近更新 更多