iOS - 文件是为存档而构建的,而不是被链接的架构(i386)

时间:2011-10-24 08:32:32

标签: iphone ios xcode linker

我想在我的iphone应用程序中使用一些静态库。当我尝试运行模拟器时,我得到链接错误。 我是iOS开发的新手,在链接我之前构建的库时遇到了这个问题;

file was built for archive which is not the architecture being linked (i386)

这意味着我从这些库中引用的所有函数都给了我这个:

undefined symbols for architectyre i386

我不确定要配置什么才能做到这一点。静态库是为armv7构建的,支持平台armv6 armv7。

2 个答案:

答案 0 :(得分:12)

我使用我为iPad构建的静态库对非常类似的错误进行了排序。我相信我的解决方案是将“i386”添加到项目的架构设置中(单击项目 - >构建设置 - >架构 - 或者它是有效架构吗? - 并单击'+'图标,键入突出显示的行中的“i386”)。任何能让你接近的人。

哦,还有一点需要注意,我已经读到我们应该将“Build Active Architecture Only”设置为“No”。它已经为我设定了,但这可能是你想要检查的。

答案 1 :(得分:2)

在努力解决同样的问题并遵循更新构建设置,清除链接器搜索路径等所有已接受的答案后,我终于发现了一个对我有用的答案。

在构建之前,请确保选择正确的类型(iPhone模拟器)而不是iOS设备。然后重建。否则,您正在尝试在模拟器(i386)上使用为iOS设备(arm处理器)构建的库。应该是显而易见的,但事实并非如此。

<强>之前:

iOS Device Settings

<强>后:

iPhone 5.1 Simulator Settings

现在,查看导航器中的Products组&gt;右键单击您的静态库(.a文件)&gt;在Finder中显示,你会发现它在Debug-iphonesimulator文件夹而不是Debug-iphoneos中。我最初没有注意文件夹名称,或者我可能早就想到了这个。

希望这有帮助。