【问题标题】:iPhone Simulator vs iPhone OS testing: file is not of required architectureiPhone Simulator vs iPhone OS 测试:文件不是必需的架构
【发布时间】:2011-01-24 03:22:53
【问题描述】:

我正在开发一个 iphone 应用程序 (sdk 3.1.3),并且我添加了 corelocation 和 mapkit 框架。我使用了 iphonesimulator 包,但使用“相对于当前 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框架包,勾选get info,路径设置为:System/Library/Frameworks/MapKit.framework

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

你好,

托马斯

【问题讨论】:

    标签: iphone testing frameworks ios-simulator


    【解决方案1】:

    转到目标 -> 构建阶段 -> 添加 CoreLocation 框架。

    【讨论】:

      【解决方案2】:

      我也有同样的问题,我已经通过在 Frameworks 文件夹中添加 CoreLocation.framework 解决了。

      【讨论】:

      • 这为我解决了,所以我认为你的答案应该被标记为答案。
      • 同意...这也为我解决了。如果您的目标是非 iOS 6.x,则可以将其设置为“可选”
      【解决方案3】:

      在该获取信息窗口中,检查 MapKit.framework 包的“完整路径”,然后在终端窗口中使用“文件”命令来验证库的架构。应该看到类似:

      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 ,在将 /mapkit 添加到 url 后,我得到:具有 2 个架构的 Mach-O 通用二进制(用于架构 cputype(12)cpusubtype(6)):Mach-O 动态链接共享库臂(用于架构 cputype(12)cpusubtype(9 )): Mach-O 动态链接共享库 arm
      • 我相信 cputype (12) 是 arm,所以看起来是正确的。不知道除了删除/重新添加有问题的框架等通常的巫术之外还有什么建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多