构建错误 - 缺少文件中所需的体系结构i386

Gab*_*ian 104 iphone cocoa-touch

构建我的iPhone应用程序时出现此错误:

ld:警告:在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit中,缺少文件中所需的架构i386

它适用于我的应用程序中的所有框架.这很奇怪,因为这不是早些时候发生的.

Jor*_*dan 131

当您向项目添加框架并无意中将框架复制到项目目录中时,会发生这种情况.

修复方法是检查任何iphone SDK*.Framework文件的项目目录(将项目存储在磁盘上的位置)并删除它们.

项目将在之后建成.

  • 另外,在iOS设备而不是模拟器上测试它. (4认同)

小智 85

我有同样的问题,解决方案结果是一个简单的解决方案.然后备份然后在TextMate或TextEdit中打开project.pbxproj(位于项目文件包中)并搜索标题为"/*Begin XCBuildConfiguration section*/"的部分.查找名为FRAMEWORK_SEARCH_PATHS的密钥并删除它及其内容(每个构建配置一次,因此我在两个位置删除它).以下是我删除的示例:

FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library/Frameworks\"",);
Run Code Online (Sandbox Code Playgroud)

我的项目现在为iPhone设备和iPhoneSimulator构建.

  • 这不适合我.但是,你带我到正确的地方去看.我的.pbxproj没有FRAMEWORK_SEARCH_PATHS密钥,而是一个名为LIBRARY_SEARCH_PATHS的密钥. (11认同)
  • 我可以验证这是如所描述的那样工作.当在不同的计算机之间移动Xcode项目时,Xcode似乎很容易与其元数据脱节; 在这种情况下,一个拥有3.0和Leopard,另一个3.1和Snow Leopard安装.FRAMEWORK_SEARCH_PATHS元数据在构建设置中显示为空白,而实际的project.pbxproj中包含内容. (2认同)

Joh*_*tie 43

这里发生的事情是,Xcode神秘地添加了一个"框架搜索路径"条目,指向特定的iPhone设备SDK.例如,我最近设置为:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks
Run Code Online (Sandbox Code Playgroud)

这导致编译器找到不正确架构的框架.删除目标的构建设置中"框架搜索路径"键下的任何值将解决该问题.


小智 10

我只想在XCode中提一下,如果你转到"编辑项目设置"并找到"搜索路径",则有一个"框架搜索路径"字段.更新这个应该解决问题,而不必破解项目文件!

干杯!

杰西

  • 在XCode 4.2.1中,我发现如下:在Project Navigator中单击项目名称.在出现的属性屏幕中,选择"构建设置"选项卡.搜索路径位于此屏幕中.删除它们对我有用. (2认同)

小智 8

在添加框架时,请检查您是否未将框架复制到项目中.如果您复制了它,则无法找到原始路径.解决这个问题.从项目中的frameworks文件夹中删除AVFoundation框架,然后再次添加,但这一次,请确保没有标记复制检查.

这为我修好了!


Sur*_*mas 8

我以不同的方式修复它.我之所以遇到这个错误的原因是我在我的项目中添加了两次security.framework.我无法在xcode中看到安全框架,我在finder中打开了项目并找到了这个框架我删除了,问题解决了.


Eri*_*tto 6

如果您的应用程序要在设备上运行,请确保您没有尝试在模拟器上运行它.听起来很明显,但无论如何都要检查.


mik*_*tew 5

虽然有可能删除了某些内容,但根据我的经验,项目文件中的内容会被搞砸.我还没有确定那些"东西"是什么.当SDK安装很好时,我遇到了类似的问题.有几种选择.

首先,将所有文件添加到新项目中.这似乎通常有效.但是,有点痛苦.

其次,您可以在XCode /获取信息/构建/库搜索路径中右键单击项目.添加类似于/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk/usr/lib的新路径.为每个版本(2.2.1等)和平台(模拟器或iPhoneOS)添加该字符串的相应版本.如果框架是您的问题,请对框架搜索路径执行类似的操作.

第三,更多的工作,但更可靠,是从MyProject.xcodeproj中打开project.pbxproj(Textmate很适合这个).查找"/*Begin XCBuildConfiguration section*/",然后"LIBRARY_SEARCH_PATHS"和"FRAMEWORK_SEARCH_PATHS".根据需要添加或修改路径,然后保存文件.

在任何情况下,屁股都会感到痛苦,而且我确定要确定原因,因为我已经发生了几次这种情况.项目建设很好,然后只是起来并拒绝这样做似乎没有什么理由.


Mar*_*sey 1

从终端在框架上运行文件命令:

file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit
Run Code Online (Sandbox Code Playgroud)

您应该会收到一条消息,告诉您 UIKit 二进制文件与哪些架构兼容。如果您没有看到列出的“i386”,那么您已经设法删除了 UIKit 的 i386 版本,这意味着您无法为模拟器进行构建。要解决此问题,您必须重新安装SDK。

如果您遇到其他错误,希望它能帮助您找出实际问题是什么。