27

我对 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. 我正在使用单视图应用程序模板。

感谢任何帮助

4

3 回答 3

52

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

您可以使用此终端命令创建通用库:

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

更多关于lipo命令的信息在这里

于 2013-03-27T13:16:26.180 回答
7

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

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

于 2014-10-06T16:10:16.327 回答
4

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

于 2014-10-02T08:58:09.373 回答