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 的未定义符号的主要内容,如果未能解决你的问题,请参考以下文章