ios - mach-o 链接器错误重复符号。 header 中没有导入的 .m 文件或声明

标签 ios xcode mach-o

我在 Xcode 的一个项目中遇到了一个错误。我一直在取得良好的进展,到目前为止一切都运行良好。在对我的应用程序中的一个页面进行了一些细微的布局更改后,在尝试运行它时 - 我收到一个 mach-o 链接器错误,指出多个(266!)重复符号。

到目前为止,我有:

  • 多次检查代码以确保我没有导入任何 .m 文件(我没有)
  • 确保头文件中没有声明(没有)
  • 检查应用内不同类中的重复符号,甚至在不应共享的 .m 文件中(没有)
  • 清理项目(不高兴)
  • 重新启动 Xcode
  • 尝试在多个模拟器和真实设备上运行(同样的错误仍然存​​在)
  • 删除派生数据(感谢 Reinhard 的提示,如下评论所示)- 通过打开管理器(窗口 --> 管理器 (shift-cmd-2) --> 项目 --> 删除派生数据)。不幸的是,错误再次出现,即使在清理和重建之后也是如此。
  • 检查了 .pch(预编译头文件)文件,该文件位于项目导航器的支持文件文件夹中 - 仍然不开心!

我在本网站和其他网站上看过许多类似的帖子,到目前为止,大多数错误似乎都是在人们导入实现文件时出现的。当我过去遇到过类似的错误时,通过代码很容易解决它们——通常是不同类中的重复变量。这一次,我已经尽力把事情封装得尽可能好,到目前为止,我在这个项目上还没有遇到过这个问题。

我暂时将错误消息发布在这里。该代码现已发布在 GitHub 上 https://github.com/bentaylor42/iRSI ,因为它太长了,放不下这个页面。

    Ld /Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Products/Debug-iphonesimulator/irsi.app/irsi normal i386
cd "/Users/bentaylor/Dropbox/iRSI v2/irsi"
export IPHONEOS_DEPLOYMENT_TARGET=7.1
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk -L/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Products/Debug-iphonesimulator -F/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Products/Debug-iphonesimulator -filelist /Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/irsi.LinkFileList -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.1 -framework AudioToolbox -framework AVFoundation -framework QuartzCore -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker /Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/irsi_dependency_info.dat -o /Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Products/Debug-iphonesimulator/irsi.app/irsi

duplicate symbol _OBJC_IVAR_$_MainMenuViewController._labelVersion in:
/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/MainMenuViewController-9C9455DB49A1DC98.o
duplicate symbol _OBJC_IVAR_$_MainMenuViewController._labelCopyright in:
/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/MainMenuViewController-9C9455DB49A1DC98.o
duplicate symbol _OBJC_IVAR_$_MainMenuViewController._switchPHEM in:
/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/MainMenuViewController-9C9455DB49A1DC98.o
duplicate symbol _OBJC_IVAR_$_MainMenuViewController._labelPHEM in:
/Users/bentaylor/Library/Developer/Xcode/DerivedData/irsi-acrjzbjeyiktwpglrdrfvwhlnhql/Build/Intermediates/irsi.build/Debug-iphonesimulator/irsi.build/Objects-normal/i386/MainMenuViewController-9C9455DB49A1DC98.o

//... and so on, for 266 duplicated symbols, across multiple classes throughout the app)

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

最佳答案

您在编译源代码中有很多重复的 .m 文件,将它们从名为“irsi”的目标中删除,之后,您应该会成功编译。 enter image description here

顺便说一句,我认为您还应该从您的项目中删除重复的引用,我在下图中列出了其中的一些。

enter image description here

关于ios - mach-o 链接器错误重复符号。 header 中没有导入的 .m 文件或声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232404/

相关文章:

ios - MFMailComposeViewController View 不会第二次关闭

ios - iOS Swift 中的碰撞检测

c# - 将字符串列表放入 NSUserDefaults 对象

ios - .framework 和 .a 中的重复符号

ios - 失败: responseSerializationFailed(reason: Alamofire. AFError.ResponseSerializationFailureReason.inputDataNilOrZeroLength)

ios - microsoft azure 客户端 swift 库选择 nolock

objective-c - 如何滚动 Xcode 版本比较栏?

iphone - 如何在 iPhone 应用程序中创建多个包?

macos - 为什么 __LINKEDIT 有时会关闭 0x1000?

objective-c - Xcode 链接 - 命令 Ld 失败,退出代码非零