iOS中x86_64架构的未定义符号

3

当我在 iPhone 5s 模拟器上运行时出现了这个错误。在低版本的 iPhone 5s 上正常执行。在我的应用程序中,我使用第三方库 CompuwareUEM。并且添加了与 CompuwareUEM 相关的所有文件和库文件,并且它支持 64 位。

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_CompuwareUEM", referenced from:
      objc-class-ref in AppDelegate.o
      objc-class-ref in SplashScreenViewController.o
      objc-class-ref in CreateProfileViewController.o
      objc-class-ref in MyTripsViewController.o
      objc-class-ref in SettingsViewController.o
      objc-class-ref in TrackingViewController.o
      objc-class-ref in UserloginViewController.o
      ...
  "_OBJC_CLASS_$_UEMAction", referenced from:
      objc-class-ref in SplashScreenViewController.o
      objc-class-ref in CreateProfileViewController.o
      objc-class-ref in MyTripsViewController.o
      objc-class-ref in SettingsViewController.o
      objc-class-ref in TrackingViewController.o
      objc-class-ref in UserloginViewController.o
      objc-class-ref in PickTripViewController.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

你们中有谁能帮我吗?提前致谢。


尝试逐个删除架构并进行测试。 - SRI
https://dev59.com/t2Ml5IYBdhLWcg3wbGh1#22708072 - Adam
3
该库不支持x86处理器。 - user523234
@TENSRI 我尝试了不同的方法,逐个删除架构并测试我的应用程序,但是我仍然得到相同的链接器错误... - S P Balu Kommuri
@user523234,你能告诉我如何知道库不支持x86 CPU吗?我在链接上检查了这份文档,并且他们说它也支持64位。 - S P Balu Kommuri
4个回答

3

运行lipo -info libCompuwareUEM.a并检查是否存在x86_64。

请查看此网站,其中有详细的设置说明。


什么是lipo -info? - iOS dev
lipo -info会给出二进制文件支持的所有架构,你是否有一个静态库,比如CompuwareUEM.a,或者你在项目中有该库的源代码? - las

2
尝试清理完整的构建目录和派生数据。 打开Xcode -> Product Clean 和 alt + product clean。

0

在运行64位iPhone模拟器时,会使用x86_64体系结构!不要将其与arm64混淆,后者是64位设备架构。

错误明确指出库中不包含x86_64。
[你也可以像las所说的那样使用lipo来检查,但错误已经很明显了]


如果你有这个项目,请为它构建;如果没有,请询问。 - Daij-Djan
@downvoter :: 请评论下投票原因,这样我就可以改正这篇帖子。 - Daij-Djan

-6
问题已解决。主要问题出在CompuwareUEM上,我完全删除了这个第三方库。现在它正常工作。

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