所以我正在使用 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 Phases
的 Compile 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/