【问题标题】:iOS - file was built for archive which is not the architecture being linked (i386)iOS - 文件是为存档而构建的,它不是被链接的架构 (i386)
【发布时间】:2011-12-13 22:52:08
【问题描述】:

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

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

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

undefined symbols for architectyre i386

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

【问题讨论】:

  • 这些库似乎与模拟器不兼容,它们不是为 i386 构建的。在设备上进行测试,或者如果您可以使用库中的代码,请重新构建它,包括 i386 架构
  • 是的,我得到了代码,我如何指定它也为 i386 构建?现在; “架构:标准(armv7)”,“有效架构:armv6 armv7”,“仅构建活动架构:否”
  • 现在不确定...将 i386 添加到有效架构?
  • 有人有解决方案吗?我也面临同样的问题。

标签: iphone ios xcode linker


【解决方案1】:

我使用我为 iPad 构建的静态库对一个非常相似的错误进行了排序。我相信我的解决方案是将“i386”添加到项目的体系结构设置中(单击项目-> 构建设置-> 体系结构——或者它是有效的体系结构吗?——然后单击“+”图标,输入“i386 "在突出显示的行中)。任何应该让你接近的人。

哦,还有一个警告,我读到我们也应该将“仅构建活动架构”设置为“否”。它已经为我设置好了,但您可能需要检查一下。

【讨论】:

    【解决方案2】:

    在解决同样的问题并遵循更新构建设置、清除链接器搜索路径等所有公认的答案之后。我终于找到了一个适合我的答案。

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

    之前:

    之后:

    现在,查看导航器中的产品组> 右键单击​​您的静态库(.a 文件)> 在 Finder 中显示,您会注意到它位于 Debug-iphonesimulator 文件夹中,而不是 Debug-iphoneos。文件夹名我一开始没注意,要不我早就想到了。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多