首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apple Mach-O Link

Apple Mach-O Link
EN

Stack Overflow用户
提问于 2013-05-07 04:20:29
回答 2查看 182关注 0票数 1

我在编译我的代码时出错。问题标识符将其标记为“Apple Mach-O Link Linker命令失败”。我不知道这是什么,所以我无法找到解决方案。

代码语言:javascript
复制
duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController in:
    /Users/studentuse/Library/Developer/Xcode/DerivedData/RSC-      
aardgrngtzicssfffcbdqsezpqmv/Build/Intermediates/RSC.build/Debug-    
iphonesimulator/RSC.build/Objects-normal/i386/XYZAppDelegate.o
    /Users/studentuse/Library/Developer/Xcode/DerivedData/RSC-  
aardgrngtzicssfffcbdqsezpqmv/Build/Intermediates/RSC.build/Debug-
iphonesimulator/RSC.build/Objects-normal/i386/XYZFlipsideViewController.o
ld: 6 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation) //This    
line has the mistake

代码有什么问题?

(这只是代码的一部分。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-07 04:30:15

问题是,您已经定义了两次 XYZFlipsideViewController 类的实现,而链接器无法确定您所指的是哪一个定义:

代码语言:javascript
复制
duplicate symbol _OBJC_METACLASS_$_XYZFlipsideViewController

定义它的两个位置是这两个对象文件:

代码语言:javascript
复制
XYZAppDelegate.o
XYZFlipsideViewController.o

有两种可能的解释:

  • 您在源文件XYZAppDelegate.mXYZFlipsideViewController.m中都有一个@implementation XYZFlipsideViewController ... @end块,或者
  • 您在一个头文件中有@implementation ... @end块,该头文件是由这两个源文件<代码>H219<代码>F220编辑的#include/#import

在第一种情况下,解决方案是删除其中一个@implementation块。在第二种情况下,解决方案是将 @implementation 块从头文件移动到源文件中,但将@interface块保留在头文件中。

理解@interface@implementation之间的区别很重要--前者说的是“这里是一个类的名称,它的实例变量的名称,以及它的成员函数的名称”,而后者说的是“这里是类的属性和成员函数的所有定义”。

票数 2
EN

Stack Overflow用户

发布于 2013-05-07 04:26:30

确保并检查您的实际项目目录中是否有文件的多个文件,它说您有重复的文件。有时在删除和重新创建文件时,我会忘记单击“发送到回收站”与“删除引用”。

我不确定这是不是你的问题,但我以前也遇到过类似的问题。

祝你好运!^^

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16406604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档