【问题标题】:Linker command error: 'ld: symbol(s) not found for architecture i386'链接器命令错误:“ld:未找到体系结构 i386 的符号”
【发布时间】:2012-07-18 04:46:34
【问题描述】:

我在编译时出错。似乎很奇怪。它用作详细视图应用程序,但使用单个视图似乎不起作用。 这是错误详情:

   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)

【问题讨论】:

    标签: ios xcode compiler-errors mach-o


    【解决方案1】:

    试试这些步骤:

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

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

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

    4. 从右侧面板顶部选择构建阶段。 (这里的其他选项是构建设置、构建规则)

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

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

    现在可以正常使用了。

    【讨论】:

    • 这适用于哪个版本的 X-Code?我似乎在右侧找不到目标...
    • @iOSTest 我遇到了同样的问题。不过,我想知道为什么会这样。
    • 还要检查你的类的子类!
    • 在 Xcode 8.3.3 中对我来说,在 Build Phases > Compile Sources 我有一些额外的 .m 文件与我正在处理的项目无关,只是将它们删除以解决 linker command failed with exit code 1错误
    【解决方案2】:

    没有看到有人建议去终端并进入项目所在的目录并运行

    xcodebuild -verbose

    查看详细的错误并且仅仅阅读错误会帮助很多时间

    【讨论】:

    • 这不完全是一个答案,但这个+选定的答案仍然帮助我解决了我的问题!就个人而言,我在 .m 文件列表中有两个插件 .m 文件(用于相同目的)。我删除了一个并重新构建它并解决了问题。
    【解决方案3】:

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

    【讨论】:

    • 这对我来说效果很好,但我也想知道为什么。有什么解释吗?
    • 您应该使用 .xcworkspace 的一个原因是您使用 pod。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

      就我而言,我错误地使用 .h.c 文件而不是 .h.m 文件创建了 UIView 的新子类。更改扩展名很容易,但我没想到要更改.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
      

      链接器错误已修复。

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

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

          从 XCODE 5.0 开始,只需退出并重新启动,如果您单击左侧窗格中的黄色警告,xcode 应该会识别并修复它

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  产品 > 清理构建文件夹

                  按“清理构建文件夹”并等待它构建并运行。 它应该可以解决构建文件中的所有错误。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-06-17
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多