我对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(正如许多其他帖子中提到的那样)并且很清楚。
更多信息:
感谢任何帮助
答案 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可能无法在模拟器上运行。当我在设备上运行项目时,我遇到的相同构建错误消失了。