iPhone模拟器与iPhone OS测试:文件不符合所需的架构

4
我正在开发一个iPhone应用程序(SDK 3.1.3),已添加corelocation和mapkit框架。我使用iPhone模拟器包,但是使用“相对于当前SDK”添加它们。当我在iPhone模拟器中测试我的应用时,一切正常。但是当我切换到iPhone设备3.1.3时,我得到了2个警告和4个构建错误:
警告: - corelocation文件不符合所需的体系结构 - mapkit文件不符合所需的体系结构
错误:
"_OBJC_CLASS_$_MKReverseGeocoder", referenced from:<br />
__objc_classrefs__DATA@0 in VMLViewController.o<br />
"_OBJC_CLASS_$_MKPinAnnotationView", referenced from:<br />
__objc_classrefs__DATA@0 in VMLViewController.o<br />
"_OBJC_CLASS_$_CLLocationManager", referenced from:<br />
__objc_classrefs__DATA@0 in VMLViewController.o<br />
"_kCLLocationAccuracyBest", referenced from:<br />
_kCLLocationAccuracyBest$non_lazy_ptr in VMLViewController.o<br />
ld: symbol(s) not found<br />

collect2: ld returned 1 exit status<br />
Build failed (4 errors, 2 warnings)<br />

我右键点击了mapkit框架包,勾选了获取信息,路径设置为:System/Library/Frameworks/MapKit.framework

我有基本的iPhone开发知识,但我不知道问题出在哪里... 有人能帮我吗?

问候,

Thomas

3个回答

16

我也遇到了同样的问题,我通过将CoreLocation.framework添加到Frameworks文件夹中来解决了它。


1
这个对我有帮助,所以我认为你的答案应该被标记为答案。 - Danny
同意...这个解决方案对我也有用。如果你的目标不是iOS 6.x,那么可以将其设置为“可选”。 - Buzzrick

0
在获取信息窗口中,检查MapKit.framework包的“完整路径”,然后在终端窗口中使用“file”命令验证库的体系结构。应该会看到类似以下的东西:
file /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/System/Library/Frameworks/MapKit.framework/MapKit
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/System/Library/Frameworks/MapKit.framework/MapKit: Mach-O universal binary with 2 architectures
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/System/Library/Frameworks/MapKit.framework/MapKit (for architecture armv6): Mach-O dynamically linked shared library arm
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/System/Library/Frameworks/MapKit.framework/MapKit (for architecture armv7): Mach-O dynamically linked shared library arm

谢谢您的快速回复,这是完整路径: /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/System/Library/Frameworks/MapKit.framework在终端中,在URL后添加/mapkit后,我得到了以下内容: Mach-O具有2种体系结构的通用二进制文件 (对于体系结构cputype(12)cpusubtype(6)):Mach-O动态链接共享库arm (对于体系结构cputype(12)cpusubtype(9)):Mach-O动态链接共享库arm - Thomas Joos
我相信cputype(12)是arm,所以看起来是正确的。除了通常的删除/重新添加有问题的框架等巫术之外,我不知道还有什么建议。 - David Gelhar

0

前往目标 -> 构建阶段 -> 添加 CoreLocation 框架。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接