链接器命令错误:找不到架构i386的'ld:符号'

时间:2012-07-19 03:13:06

标签: ios xcode compiler-errors mach-o

我在编译时遇到错误。似乎很奇怪。它作为详细视图应用程序工作,但使用单一视图似乎不起作用。 这是错误细节:

   Undefined symbols for architecture i386:
    "_OBJC_CLASS_$_RssArticle", referenced from:
      objc-class-ref in RssXmlParser.o
  ld: symbol(s) not found for architecture i386
  clang: error: linker command failed with exit code 1 (use -v to see invocation)

11 个答案:

答案 0 :(得分:57)

尝试以下步骤:

  1. 在XCode中打开您的项目。

  2. 在XCode的左侧窗口/面板中,单击顶部的项目名称。

  3. 现在从XCode的右侧面板中选择Target。

  4. 从右侧面板的顶部选择Build Phases。 (此处其他选项将是“构建设置”,“构建规则”)

  5. 在同一个面板中打开“编译源”,这里检查:是否列出了所有文件(.m)?如果不是所有文件都单击(+)登录底部以添加(.m)不在列表中的文件

  6. 根据您的错误,似乎RssXmlParser不存在,添加此项并再次编译

  7. 它现在可以正常工作。

答案 1 :(得分:26)

看不到有人建议去终端并转到项目所在的目录并运行

  

xcodebuild -verbose

查看详细错误,只是阅读错误有助于很多时间

答案 2 :(得分:13)

我意识到我必须使用.xcworkspace文件而不是.xcodeproj文件。

答案 3 :(得分:7)

产品 - >然后清洁产品 - >运行:))

答案 4 :(得分:2)

就我而言,我错误地创建了UIView的新子类,其中包含.h.c个文件,而不是.h.m个文件。更改扩展程序很简单,但我没有考虑更改.m文件的内容。所以我的.h文件有

#ifndef My_Project_MPMyView_h
#define My_Project_MPMyView_h

#import <UIKit/UIKit.h>

@interface MPMyView : UIView

@end

#endif

我的.m个文件错误地

#include <stdio.h>

当我将.m文件更改为

@interface MPMyView : UIView

@end

@implementation MPMyView

@end

链接器错误已修复。

答案 5 :(得分:0)

我解决了同样的问题,因为我将组件创建为单独的项目。将文件夹添加到主项目后,我忘记从导入的组件组目录中删除.plist,.string和extra main.m文件。

删除这些解决了我的问题,因为该应用显然正在构建冲突的构建命令......

答案 6 :(得分:0)

由于文件名重复,我遇到了这个错误(我通过编辑器菜单在核心数据中自动创建了NSManagedObjectContext子类)。

从XCODE 5.0开始,只需退出并重新启动,xcode就会识别出来并在您点击左侧窗格中的黄色警告时为您修复

答案 7 :(得分:0)

Xcode 6.4上发生了类似的错误。看起来像Xcode错误。

我的解决方法是转到导致错误的“.o”文件,取消选中并重新检查您需要的目标成员资格。

答案 8 :(得分:0)

我认为您可能正在尝试在一个项目中创建两个不同的.C文件(带有main函数)。 C只允许你在每个项目中都有一个主入口。

答案 9 :(得分:0)

我不知道它是如何工作的。但我只是关闭了xcode并通过单击xcworkspace文件再次打开并为我工作。你可能希望这可以解决你的问题,谢谢你。

答案 10 :(得分:0)

按住alt。 在顶部工具栏上转到

产品&gt;清理构建文件夹

按&#34;清理构建文件夹&#34;并等待它建立和运行。 它应该解决构建文件中的任何错误。