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

U_D*_*U_D 23 iphone xcode cocoa-touch xcode4.5

我对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],缺少文件中所需的体系结构i386 [Path/FileName.a](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. 我正在使用单视图应用程序模板.

感谢任何帮助

Dmi*_*kov 52

此警告意味着您正在尝试使用模拟器(i386)为设备(ARM)制作的库.

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

lipo -create lib_arm.a lib_i386.a -output lib_universal.a
Run Code Online (Sandbox Code Playgroud)

有关更多信息命令在这里.

  • 得到"无法打开输入文件:lib_arm.a(没有这样的文件或目录)"是否有一个特定的位置你应该运行这个命令? (2认同)

Luc*_*sen 7

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

这与Dmitry Zhukov的回答是一样的,但是通过Xcode做而不是绕过它.