2017-09-26 115 views
2

切换到Xcode 9后出现错误,它看起来像这样。Xcode 9架构x86_64的未定义符号

enter image description here

我空白的项目和类的名称,但与的.o后缀结束的类新的列表。在Xcode 8.3.2中一切正常。我有两个项目,一个是没有问题的图书馆。另一个项目是测试应用程序,它通过Podfile中的path指令指向库。在这两个项目的构建设置中 - >体系结构设置为标准体系结构,仅将构建活动体系结构设置为调试:是,发布:否。是否遇到此问题?非常感谢您的帮助。

+0

您的吊舱是否已更新 –

+0

我刚刚更新了它们,但同样的错误 –

+0

是您在设备或模拟器中尝试过的,您的文件不支持模拟器 –

回答

0

当我跑分析构建时,它正在工作,但与经典构建有提到的错误。通过日志搜索后,似乎有一些奇怪的行为与标志,特别是-fprofile-instr-generate。解决方案是在库项目的构建设置中将标记启用代码覆盖率设置为否。这是拍摄到黑暗中,但不知何故得到它的工作。

0

由于您使用的是Cocoapods,您很可能需要更新它们。

这意味着您需要在项目目录内的命令行上执行pod update,然后在Xcode中重建项目。

一般来说,当使用新的主要版本的Xcode时,有必要重新构建所有组件。你的错误信息告诉你,你已经拥有的目标文件(* .o文件基本上是编译器从源文件中产生的)与新编译的目标文件不兼容(在你的情况下抱怨的链接程序有将所有目标文件组合或“链接”在一起的目的)。

有时可能需要清理派生数据(Xcode缓存)。您可以通过转到Xcode的Product菜单并按住Option/Alt键的同时选择菜单项“clean build folder”。

+0

我在两个项目中都做了pod更新,按照您的建议清理了构建文件夹,但仍然弹出了这些错误。 –

+0

你在这两个项目中设置了什么Swift版本? 您确定测试应用程序中的引用框架不是一些旧框架而不是您正在新建的框架吗? –

+0

您可以从链接的框架中删除应用程序中的依赖关系,然后再将其拖入到内部 –

1

简单的技巧在这里:Go - >去文件夹“/ Library/Developer/Xcode”删除Derived data然后清理你的项目然后运行。

3

跑进类似的问题。只要将它张贴在这里,以防它可以帮助任何人。

使用类AbcService在我们的应用程序的Objective-C类B.框架(写在斯威夫特3和我们自己)升级从Xcode8/Swift3到Xcode9/Swift4后,未能打造为存档释放配置,由于Undefined symbols错误此类链接时:

Undefined symbols for architecture arm64: 
    "_OBJC_CLASS_$__TtC15XxxabcServices17AbcService", referenced from: 

奇怪的是,它的工作细到归档调试配置,并在模拟器中运行。

花费了几乎1天找出根本原因:雨燕类AbcService在框架缺少public修改。

+0

在这个问题上我一直在挠头。谢谢!! –

相关问题