Xcode 8.1 x86_64 架构未定义符号错误

3
Undefined symbols for architecture x86_64:
"_BROADCAST_MODE_IBEACON", referenced from:
-[MainViewController tableView:cellForRowAtIndexPath:] in MainViewController.o
"_OBJC_CLASS_$_TZBeaconSDK", referenced from:
  objc-class-ref in MainViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

当我想使用模拟器时,出现了这个错误。在 iPhone 上构建没有问题,只有在使用模拟器时才会出错。我尝试从构建设置中更改架构,错误文本变为 i386,但问题仍然存在。

我使用的 SDK 是 TZBeacon

SDK 存在问题吗?你能帮我解决这个问题吗?


1
潜在地,libTZBeaconSDK.a 不兼容模拟器(未构建),请查看文档。 - Larme
3个回答

10

您的库不支持模拟器。运行此命令以查看它支持哪些架构:

lipo -info libTZBeaconSDK.a

结果是: libTZBeaconSDK.a文件中的架构是:armv7 arm64

因此,您必须在设备上测试,而不是模拟器上测试!


有没有其他的方法,让模拟器变成可选的? - KKRocks
如何解决它? - famfamfam

5
通常情况下,在模拟器中出现这个错误是因为框架的架构是为设备而建的。您需要使用适用于模拟器的框架版本才能在模拟器上运行它。这应该由框架供应商提供。如果他们没有提供,那么请考虑仅在构建到设备时包含该框架,而不是模拟器。这里有另一个SO答案可以指导您: 如何只在构建到设备时包含框架,而不是iOS模拟器?

-6

这里有个简单的技巧:前往 -> 前往文件夹 "/Library/Developer/Xcode",删除派生数据,清理你的项目,然后运行


没有起作用。@PrasannaKumar - alper
没有帮助。 - Inuyasha

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