忽略文件[path]缺少文件中所需的架构i386

时间:2013-03-27 13:09:07

标签: iphone xcode cocoa-touch xcode4.5

我对Xcode和Iphone开发很新,遇到了以下问题:

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

  

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

如果我忽略了警告,并试图在头文件中实例化给我的类,我会收到这些错误:

  

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

     

架构i386的未定义符号:

     

“_ OBJC_CLASS _ $ _ HRMonitor”,引自:

     

ViewController.o中的objc-class-ref

     

ld:找不到架构i386的符号

     

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

我已经检查过Framework Search Pathes(正如许多其他帖子中提到的那样)并且很清楚。

更多信息:

  1. 我正在使用Xcode 4.6.1
  2. 这些文件当前位于项目的根文件夹中。
  3. 我正在使用单视图应用程序模板。
  4. 感谢任何帮助

3 个答案:

答案 0 :(得分:51)

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

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

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

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

答案 1 :(得分:7)

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

这与Dmitry Zhukov的答案完全一样,但是通过Xcode而不是绕过它。

答案 2 :(得分:4)

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