【问题标题】:ignoring file [path] missing required architecture i386 in file忽略文件 [路径] 在文件中缺少所需的体系结构 i386
【发布时间】:2013-03-17 13:55:26
【问题描述】:

我是 Xcode 和 Iphone 开发的新手,遇到了以下问题:

我打开了一个新项目并添加了 *.h 和一个 *.a 文件(我从某个设备供应商那里获得的)。 我收到以下警告:

ld:警告:忽略文件 /Users/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.a,文件 /Users/udi/Desktop/Xcode/Xcode Projects/Scosche/libmyTrekSDK_armv7.a 中缺少所需的架构 i386 (2片)

如果我忽略警告,并尝试实例化头文件中提供给我的类,我会收到以下错误:

ld:警告:忽略文件 [Path/FileName.a],文件 [Path/FileName.a] 中缺少所需的体系结构 i386(2 个切片)

架构 i386 的未定义符号:

“_OBJC_CLASS_$_HRMonitor”,引用自:

ViewController.o 中的 objc-class-ref

ld:未找到体系结构 i386 的符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)

我已经检查了框架搜索路径(在许多其他帖子中都提到过)并且很清楚。

更多信息:

  1. 我使用的是 Xcode 4.6.1
  2. 文件当前位于项目的根文件夹中。
  3. 我正在使用单视图应用程序模板。

感谢任何帮助

【问题讨论】:

    标签: iphone xcode cocoa-touch xcode4.5


    【解决方案1】:

    此警告表示您正在尝试将为设备 (ARM) 制作的库与您的模拟器 (i386) 一起使用。

    您可以使用这个终端命令来创建一个通用库:

    lipo -create lib_arm.a lib_i386.a -output lib_universal.a
    

    关于lipo命令here的更多信息。

    【讨论】:

    • 很高兴这对您有所帮助:)
    • 我猜 armv7 和 i386 的库都需要存在,对吧?
    • 得到“无法打开输入文件:lib_arm.a(没有这样的文件或目录)”是否有一个特定的位置应该运行这个命令?
    • @shim,您应该将目录更改为静态库(arm 和 i386)所在的目录,如下所示: $ cd /libs/ $ lipo -create name_of_your_arm_lib .a name_of_your_386_lib.a -output lib_universal.a
    • 我的应用中有一个 BluetoothManager.framework,其中包含两个 .h 文件。应用程序在 iPad 上运行良好,但在模拟器上尝试时出现 i386 错误。找不到路。
    【解决方案2】:

    如果您使用的是第 3 方代码,请记住,某些 SDK 可能无法在模拟器上运行。当我在设备上运行项目时,我遇到的相同构建错误消失了。

    【讨论】:

      【解决方案3】:

      将目标的“构建设置 > 仅构建活动架构”更改为“否”

      这与 Dmitry Zhukov 的回答做同样的事情,但通过 Xcode 做,而不是绕过它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-08
        • 2011-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-26
        相关资源
        最近更新 更多