ios - 静态库和 Swift

标签 ios swift iphone xcode static-libraries

所以我正在使用 Swift 开发一个 iOS 项目,我想创建一个包含一些有用内容的静态库。

我的问题是,当我尝试在 Xcode(版本 6.3)中构建我的库时,出现“构建失败”,后跟:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool:未知选项字符“X”在:-Xlinker

我从未见过这个,这不是我的第一个静态库。所以我想我可能与我只使用 Swift 类这一事实有关。

大家怎么看? 提前谢谢你。

最佳答案

如前所述,从 Xcode 9 Beta 4 开始,Apple 确实允许在静态库中使用 Swift。

我们试图在一个现有项目上执行此操作,该项目具有基于 Objective-C 的目标和“子”静态库项目,但一直遇到链接错误

ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64

还有

ld: library not found for -lswiftDispatch for architecture x86_64

这是因为主要目标(应用程序)试图完全针对 Objective-C 进行构建,而静态库并未告知它需要包含 Swift 库。这是因为在我们的应用程序目标的 Build PhasesCompile Sources 部分中没有任何 Swift 文件。

基本上您所要做的就是将至少一个 .swift 文件添加到该编译列表,它将为您包含 Swift 库。它甚至不需要包含任何代码或值,它可以是一个空文件。

然后您可以开始将 Swift 文件添加到您的“子”静态库项目中。我会让它首先为您生成桥接 header ,然后您可以移动它并更改导入的内容(如果您移动它,请确保项目指向build设置中的正确文件)。

您仍应记住,在相同 静态库中使用 Swift 和 Objective-C 可能会有其自身的问题。我建议阅读 the Apple developer doc "Swift and Objective-C in the Same Project"关于如何解决将 Objective-C 导入 Swift(使用桥接 header )以及如何在 Objective-C 代码中使用 Swift 文件(为您的库导入生成的 -Swift.h)。

关于ios - 静态库和 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29676470/

相关文章:

ios - MKMapView 显示用户位置崩溃

ios - 如何请求用户允许接收通知?

ios - 如何移动 UIView 并使用 Swift 以编程方式放置新的 UIView?

iphone - REST -> XML -> 核心数据 -> UITableView 的好策略吗?

ios - 使用AWSContinuationBlock发送兼容的指针 block 类型

ios - 我正在尝试创建多个具有不同类的自定义单元格

ios - 无法转换 UTC 时间

iphone - iOS - 无法访问 didSelectRowAtIndexPath 中的 NSMutableArray?

ios - UITextfield 自定义位置因 iPhone 尺寸不同而上移

ios - 无法在 iPhone 上滚动 heroku 维护页面