将 Cocoa Touch 框架链接到 Today Extension 时出现链接器错误

Posted

技术标签:

【中文标题】将 Cocoa Touch 框架链接到 Today Extension 时出现链接器错误【英文标题】:Linker error when linking Cocoa Touch Framework to Today Extension 【发布时间】:2015-12-28 23:40:08 【问题描述】:

我正在处理的当前项目有一个 ios 组件,以及一个在 UI 组件中有一点重叠的 Today Extension。

我创建了一个包含重复 UI 元素的 cocoa touch 框架作为项目中的新目标,并将其添加到应用程序和扩展程序的 Link Binary with Libraries 构建阶段。

我可以很好地构建 Debug 版本,但是在归档发布版本时出现以下错误。

Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_MyClass", referenced from: someFile
ld: symbol(s) not found for architecture arm64

armv7 也会出现同样的错误。

我试图通过使用构建设置来找到解决方案,但到目前为止没有运气。

Current build settings

编辑

我发现了问题所在。 我将“默认隐藏的符号”编译标志设置为 YES

【问题讨论】:

库(及其所有组件)是在发布版本中构建还是仅用于调试版本? 感谢@Tim 的回复。它正在为两者构建。 看起来包含 MyClass (MyClass.m?) 的实现文件尚未添加到任何 Xcode 目标中。 @***foe 我也仔细检查过,它已添加到我创建的 Cocoa Touch 框架中。 【参考方案1】:

我发现了问题所在。 我将“默认隐藏的符号”编译标志设置为 YES

【讨论】:

以上是关于将 Cocoa Touch 框架链接到 Today Extension 时出现链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

将 cocoapod 依赖项添加到 cocoa touch 框架

如何将用 Swift 编写的 Cocoa Touch 框架导入 .pch 文件?

在 Cocoa Touch 框架中包装静态库

核心数据到 Cocoa Touch 框架

构建纯 Swift Cocoa Touch 框架

如何使 Cocoa Touch 框架在应用程序中保持最新