构建iPhone应用程序时出现此错误:
ld:警告:在/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit,缺少文件中所需的架构i386
我的应用程序中的所有框架都是一样的。这很奇怪,因为这不是早些时候发生的。
答案 0 :(得分:131)
当您向项目添加框架并无意中将框架复制到项目目录中时,会发生这种情况。
修复方法是检查任何iphone SDK * .Framework文件的项目目录(在磁盘上存储项目的位置)并删除它们。
项目将在之后建成。
答案 1 :(得分: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\"",);
我的项目现在为iPhone设备和iPhoneSimulator构建。
答案 2 :(得分:43)
这里发生的事情是,Xcode神秘地添加了一个“框架搜索路径”条目,该条目指向特定的iPhone设备SDK。例如,我最近设置为:
$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk/System/Library/Frameworks
这导致编译器找到错误架构的框架。删除目标构建设置中“框架搜索路径”键下的任何值将解决此问题。
答案 3 :(得分:10)
我只是想在XCode中提及“编辑项目设置” 并找到“搜索路径”“框架搜索路径”有一个字段。更新这个应该解决问题,而不必破解项目文件!
干杯!
杰西
答案 4 :(得分:8)
检查在添加框架时没有将框架复制到项目中。如果您复制了它,则无法找到原始路径。解决这个问题。从项目中的frameworks文件夹中删除AVFoundation框架,然后再次添加,但这一次,请确保没有标记复制检查。
这为我修好了!
答案 5 :(得分:8)
我以不同的方式修复它。我之所以遇到这个错误的原因是我在我的项目中添加了两次security.framework。我无法在xcode中看到安全框架,我在finder中打开了项目并找到了这个框架我删除了,问题解决了。
答案 6 :(得分: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”。根据需要添加或修改路径,然后保存文件。
无论如何,屁股上的疼痛,我肯定想确定原因,因为我已经发生了几次这种情况。项目建设很好,然后只是起来并拒绝这样做似乎没有什么理由。
答案 7 :(得分:5)
如果您的应用程序要在设备上运行,请确保您没有尝试在模拟器上运行它。听起来很明显,但无论如何都要检查。
答案 8 :(得分:4)
“编辑项目设置”并找到“搜索路径”“框架搜索路径”有一个字段。删除所有!!
答案 9 :(得分:4)
这也发生在我身上。感谢一位伟大的合作伙伴,我们找到了答案。您的Xcode可能指向模拟器..将其更改为IOS设备,而不是......在....之后顺利构建。
答案 10 :(得分:1)
在终端上的框架上运行 file 命令:
file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/System/Library /Frameworks/UIKit.framework/UIKit
您应该收到一条消息,告诉您UIKit二进制文件与哪些架构兼容。如果你没有看到列出的“i386”,那么你已经设法删除了UIKit的i386版本,这意味着你无法为模拟器构建。为了解决这个问题,你必须重新安装SDK。
如果您遇到其他错误,希望它能帮助您弄清楚实际问题是什么。
答案 11 :(得分:1)
我只是想让你知道,在我的情况下,我遇到了同样的问题,我意识到我有一个名为Xcode3.1.3的旧Xcode文件夹我只是重命名它,因为它是一个较旧的版本并且做了魔术对我来说。
答案 12 :(得分:1)
检查目标设置中的图书馆搜索路径。有时愚蠢的图书馆会进入那里,这会给你一个类似的错误。
您可以删除此部分中的所有条目。
答案 13 :(得分:0)
我刚刚经历了一些略有不同的事情,因为我在我自己的库(WM_GSRecognizerLib)上工作,但错误是一样的。
发生了什么:由于某些更新,针对lib包含(.a)的路径来自" Debug-iphoneos"文件夹(生成它的位置)。编译通用iOS设备工作正常,但不适用于模拟器,抱怨缺少i386架构。
我为这个问题所做的是,还包括来自" Debug-iphonesimulator"的二进制文件。文件夹中。
它可以帮助解决这个问题,因为解释如下:设备需要arm64 / armv7 / armv7s的二进制文件,而模拟器确实需要i386。
答案 14 :(得分:0)
我的解决方案是将模拟器目标调试设置为YES,只需查看git status即可查看仅作为.project添加为体系结构的新行。如果不设置,则该构建将在所有体系结构上运行,并显示一些缺少的体系结构,例如i386或其他。 注意,显然,主要问题是使用实现某种特定体系结构的框架。
答案 15 :(得分:-1)
我使用xcode版本4.0.2时也得到了同样的错误所以我所做的是选择了xcode项目文件,并从他们选择了目标选项他们可以看到我的项目的应用程序所以我点击它然后去了到构建设置选项。
他们在搜索选项中键入了 框架搜索路径 ,并删除了所有设置,然后点击了构建按钮,这对我来说很合适,
谢谢和问候