我对 iOS/iPhone/XCode 世界完全陌生,所以如果你猜测是在相当复杂的事情和每个人都应该知道的简单事情之间,我会选择简单的答案。 :-)
好的,所以我继承了我们外包给另一家公司的 iPhone 项目。我现在唯一的目标是能够构建该死的东西。我设置了 XCode 4.2 并安装了正确的 SDK。我加载了项目,到目前为止一切似乎都很好。但是,当我构建时,我认为是构建的链接阶段出现错误。我不完全确定,因为在构建时状态变化很快。我得到的错误如下:
从我在网上找到的内容来看,我使用的库之一似乎不是为 i386 平台编译的。首先,这对我来说没有意义,因为我正在使用的库(这些错误来自哪里)目前作为子项目包含并生成 .a 我认为是独立于拱门的文件(我在这里错了吗??)。此外,我在项目中找不到任何指示 XCode 构建为 i386 架构的地方。这是我到目前为止所做的:
主项目配置
子项目配置
当我使用发布配置构建事件时,我仍然收到此错误,我不知道为什么。我在构建配置中看到的所有内容似乎都表明我应该在 arm 架构中构建所有内容。
最佳答案
您收到错误是因为您弄乱了架构设置。您不应该针对 ARM 代码修复这些问题,但也应该允许 i386。
现在,您的多个(子)项目之一仅构建 ARM 代码,一旦您尝试构建模拟器版本,就会导致链接器错误。发生这种情况是因为您的架构设置不应该是。
请注意您对 的设置任何 iOS SDK ,那是不正确的,因为它只构建 ARM 代码。选择特定设置(单击)后,使用键盘上的退格键完全删除这些设置。
这就是它应该的样子:
$(ARCHS_STANDARD_32_BIT)
解析为 ARMV7
构 build 备特定代码和 i386
时在构建模拟器特定代码时。包括ARMV6
仅当您计划将结果提供给较旧的 iOS 设备(iPhone 3G 及以下)时,才需要按照我的屏幕截图的代码。
一旦这些设置为 活跃于所有(子)项目 ,一切都应该顺利进行。
要从项目中创建通用库,如果您计划将静态库分发给其他开发人员,请使用 LIPO
。 .
例子:
lipo input_library_1.a input_library_2.a -create -ouput output_library.a
假设 input_library_1 是
i386
特定(模拟器)和 input_library_2 是 ARM
特定的(设备),这会将它们加入一个可用于模拟器和设备的通用版本。
关于iphone - 无法将 iOS/iPhone 应用程序构建为 i386 以外的任何应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10208407/