ios - Git 拉取总是导致重复符号 _OBJC_CLASS_?

标签 ios objective-c linker clang

在开发 iOS 应用程序时,我们不断遇到同样的问题 - 经过一些 git pull/merge 的更改后,我们得到

duplicate symbol _OBJC_CLASS_

链接器错误

针对不同的类。如果从“目标/构建阶段中的编译源选项卡”中删除源文件(如果它是重复符号 _OBJC_METACLASS_$_User 则说 User.m),则可以消除此错误。

完整的错误如下所示:

duplicate symbol _OBJC_CLASS_$_GridView in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/GridView-9FDDD336172B4A48.o
duplicate symbol _OBJC_METACLASS_$_GridView in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/GridView-9FDDD336172B4A48.o
duplicate symbol _OBJC_METACLASS_$_User in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/User.o
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Products/Debug-iphoneos/libRestKit.a(User.o)
duplicate symbol _OBJC_CLASS_$_User in:
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Intermediates/App.build/Debug-iphoneos/App.build/Objects-normal/armv7/User.o
    /Users/user/Library/Developer/Xcode/DerivedData/App-bjpymtdfvzxkembjocjjpbswfoul/Build/Products/Debug-iphoneos/libRestKit.a(User.o)
ld: 4 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

最佳答案

这里有一些尝试:

  1. 检查您的项目,看看您是否从两个不同的位置导入了相同的文件。查看您的项目 |目标 |构建阶段(选项卡)|再次编译 Sources 部分并确保文件(GridView.m 和 User.m)不会出现两次。该列表按添加日期而不是文件名对文件进行排序,因此您可能错过了它。

  2. 此外,您似乎在静态链接外部库 libRestKit.a。您或您团队中的其他人是否正在导入 RESTKit 的源代码以及静态库?如果两者都有,您将得到重复的符号。

  3. 最后,确保没有人在代码中的某处导入带有类似#import "User.m"或#import "GridView.m"之类内容的 .m 文件——尽管这似乎不太可能,因为您能够通过删除有问题的源文件来解决问题。

在每个人都具有相同的构建配置之前,您将继续遇到这些问题,因此您应该让每个人都提交并 checkin 他们的所有代码。修复任何合并冲突并让您的本地存储库完全符合您系统上应有的内容,然后推送。然后,让团队的其他成员删除他们的存储库并重新克隆。希望让每个人都从相同的代码库/项目开始将消除问题再次发生,甚至可能指出问题发生的地方,以便您将来可以避免它。

最好的问候。

关于ios - Git 拉取总是导致重复符号 _OBJC_CLASS_?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15046698/

相关文章:

ios - 需要正确的 Sql Stmt

iphone - 如何知道iphone系统是否已开机?

iphone - iPad上的黑屏而不是启动图像

ios - 私有(private) API iOS iCloud 锁定 + 查找我的 iPhone 状态和唯一标识设备

ios - 如何在 Objective c 中隐藏谷歌广告

linux - 如何链接到特定的 glibc 版本?

ios - 数据加载后立即显示 tableView 弹出窗口

ios - ViewController 的释放

windows - 将 exe 与//MT 标志链接

c++ - 外部符号上的静态链接 OpenCV CUDA 应用程序错误