XCode 4.5 - 架构 armv7 的未定义符号

Posted

技术标签:

【中文标题】XCode 4.5 - 架构 armv7 的未定义符号【英文标题】:XCode 4.5 - Undefined symbols for architecture armv7 【发布时间】:2012-11-06 12:23:40 【问题描述】:

我是 ios 开发的新手,我被分配了将旧版应用程序更新到 iOS6 的任务。该应用程序是使用 Unity 构建的。在 XCode 4.5 中,当我尝试在我的设备 (iPhone 4) 上运行 Unity-iPhone 应用程序时,我收到此错误:

Xcode cannot run using the selected device.
Choose a destination with a supported architecture in order to run on this device.

我去了目标的构建设置,并注意到 armv6 是为架构和有效架构设置的。我将这两个设置都更改为标准(armv7,armv7s)。当我尝试运行该项目时,我得到了 104 个编译器错误,如下所示:

Undefined symbols for architecture armv7:
  "ForceInclude_BaseBehaviourManager()", referenced from:
      RegisterManagerClasses() in RegisterClasses.o

因此,这不仅仅是将正确的框架导入项目的问题。这些都是源文件之一中的所有方法。对于 armv7,它们如何未定义?另外,如何解决这个问题?

【问题讨论】:

只需清理并运行项目。然后检查 ForceInclude_BaseBehaviourManager(),如果有任何警告或强制转换问题,请修复它 【参考方案1】:

注意:为了在设备中运行应用程序,设备 IOS 版本必须与 IOS DEPLOYEMENT TARGET 匹配 见下图:

只需使用您的设备 IOS 更改 IOS 部署目标。

选择Project->Select Info(tab)->从下拉框中选择IOS部署Target

另请注意:Xcode 4.5(及更高版本)不支持生成 armv6 二进制文件。

【讨论】:

【参考方案2】:

我不确定您使用的是哪个版本的 Unity 引擎,但它是否支持 armv7?

因为如果它不支持,并且它只支持 armv6,那么您将不得不降级您的 Xcode 版本,以便使用编译 armv6 二进制文件的编译器,因为 Xcode 4.5 不这样做。

如果您使用的是支持 armv7 的 Unity 版本,则需要将最低部署版本设置为 iOS4.3

【讨论】:

【参考方案3】:

尝试架构 armv6 和 armv7 清理项目 重新构建。

【讨论】:

以上是关于XCode 4.5 - 架构 armv7 的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章

XCode 5 - 架构 armv7 的未定义符号:

XCode - 架构 armv7 arm64 的未定义符号

build.sh ios 使用 XCode6 Beta6 时生成“架构 armv7 的未定义符号”

无法构建发布应用程序 - 架构 armv7 的未定义符号

架构 armv7 (WebRTC) 的未定义符号

架构 armv7 (WebRTC) 的未定义符号