【问题标题】:Undefined symbols for architecture armv6, Updating to iOS 4.3架构 armv6 的未定义符号,更新到 iOS 4.3
【发布时间】:2011-07-21 04:30:40
【问题描述】:

我正在使用新的 xcode4 将应用程序从 iOS 4.2 修补到 4.3。 除了将 iOS 设置为 4.3 之外,没有进行任何更改,我创建了权利并开始了!

我得到的信息是:

Undefined symbols for architecture armv6:"function", referenced from:

我试图清理项目,重新安装 xcode。 我还卸载了 xcode4 演示版。 我也尝试设置为 Optimized armv7。

我会很高兴得到一些帮助,但我被困住了。真的。

提前非常感谢!

【问题讨论】:

  • function 是从哪里引用的?引用的文件中有什么看起来有趣的地方吗?
  • 尝试在 Targets 和 Project Build Settings 下的 Valid Architecture 下添加 i386
  • 请附上错误的全文。
  • 您是否在任何库中链接?是否为 armv6 架构编译了带有符号“function”的库?
  • 这是一个通用应用程序吗?使用仅存在于 iPad 中的某些类(例如 UISplitviewcontroller)时,您可能会收到此错误。如果是这种情况,你可以在你的项目中通过弱链接 UIKit 框架来解决

标签: iphone objective-c xcode ios ios4


【解决方案1】:

就我而言,我是在 viewcontroller.m 中执行此操作的

#import <MediaPlayer/MediaPlayer.h>

无需使用 MediaPlayer.framework 与库进行链接二进制。添加后编译正常

【讨论】:

    【解决方案2】:

    我突然出现了一个类似的问题 - 更具体地说,我收到了Undefined symbols for architecture armv6: "_OBJC_CLASS_$_CLLocationManager", referenced from: objc-class-ref in MyCLController.o

    请注意,我的框架中列出了 CoreLocation.framework(在 xcode 的项目左侧导航中,在 Frameworks 文件夹下);并且以前的地理定位工作得很好。

    我通过重新安装 CoreLocation.framework 解决了这个问题。

    如果您不确定如何在 xcode 中执行此操作:
    * 在 xcode 左侧导航栏中单击您的项目
    * 进入项目设置的常规选项卡
    * 向下导航 - 您将看到安装在 Linked Frameworks and Libraries 下的框架列表
    * 点击+图标添加CoreLocation.framework

    【讨论】:

      【解决方案3】:

      我在 Xcode5 for iOS7 中使用 TestFlight SDK 时遇到了同样的问题。我的问题是“仅构建活动架构”设置为仅调试。

      你可以在'YourProject'->'Build Settings'->'Architectures'下找到设置设置'Debug'选项为'architecure arm7 arm7s'。

      这解决了我的问题 - 我希望它也能帮助你! :)

      【讨论】:

        【解决方案4】:

        我在 Xcode5 for iOS7 中使用 TestFlight SDK 时遇到了同样的问题。我的问题是“仅构建活动架构”设置为仅调试。

        您可以在'YourProject'->'Build Settings'->'Architectures'下找到设置 将'Release'选项设置为'Yes'。

        这解决了我的问题 - 我希望它也能帮助你! :)

        【讨论】:

          【解决方案5】:

          这是我遇到此问题的原因:

          我从另一个项目中添加了 .h.m 和 NIB,方法是将它们拖到我的项目导航器上。 Xcode 没有正确地将它们添加到构建阶段。

          我对这个问题的解决方案:

          • 点击项目图标
          • 转到导航菜单中的目标
          • 点击“构建阶段”标签
          • .m 文件添加到“编译源”(拖动它,或使用+ 按钮)
          • .xib 或 Storyboard 文件添加到“复制捆绑资源”中
          • 清理和构建

          【讨论】:

            【解决方案6】:

            我遇到了这个问题,我刚刚解决了。 这是函数名称中的一个简单拼写错误(忘记了一个字母),导致了我的问题。

            【讨论】:

              【解决方案7】:

              在导航窗口中单击您的项目名称,选择您要构建的目标,进入构建阶段,确保 Xcode 告诉您缺少的那个在其中。

              【讨论】:

                【解决方案8】:

                对于这种类型的错误,这是我通常看到的:

                 Undefined symbols for architecture armv6:
                  "_OBJC_CLASS_$_MyCustomController", referenced from:
                      objc-class-ref in SomeOtherController.o
                ld: symbol(s) not found for architecture armv6
                

                几乎每次我看到这个错误都是由SomeOtherController.hSomeOtherController.m 中的导入语句中的隐藏/不可见字符引起的。因此,查看您的 .h 和 .m 文件,找到如下所示的行:

                #import "MyCustomController.h"
                

                删除这一行并重新输入(不要复制/粘贴它——你只会重新粘贴有问题的隐藏字符)。

                【讨论】:

                • 当我没有在特定的构建目标中包含一些文件时,我也遇到了这个确切的问题。
                • @raidfive:谢谢!!我遇到了同样的问题,这是因为出于某种原因,Xcode 的无限智慧决定不将几个类的 .m 文件放入我的目标的 Compile Sources 部分。手动添加它们,它编译得很好。
                • @Answerbot 感谢您的解决方案,但它对我不起作用。我得到了这样的错误 架构 armv6 的未定义符号:“_OBJC_CLASS_$_CLLocationManager”,引用自:MyCLController.o 中的 objc-class-ref ..需要紧急解决..我还删除了该 heder 文件 #import ..
                • @Vivek2012:我猜您可能需要将 CoreLocation 框架添加到您的项目中
                猜你喜欢
                • 1970-01-01
                • 2011-12-18
                • 1970-01-01
                • 2015-12-04
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-01-08
                • 2014-11-07
                相关资源
                最近更新 更多