静态库和Swift

所以我正在Swift的iOS项目中工作,我想创build一个静态库,其中包含一些有用的东西。

我的问题是当我尝试在Xcode(版本6.3)中构build我的库时,我有一个“生成失败”,后面跟着: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: unknown option character 'X' in: -Xlinker

我从来没有见过这个,这不是我的第一个静态库。 所以我想我可能会被链接到我只使用Swift类的事实。

你们有什么感想 ? 先谢谢你。

从Xcode 9 beta 4开始,Xcode本身就支持带有Swift源码的静态库。

Swift不支持静态库

虽然正确的方法应该是创build一个框架,这里有一个解决方法。

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

我们试图在一个基于Objective-C的目标和“子”静态库项目的现有项目上这样做,并一直运行到链接错误

 ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64 

 ld: library not found for -lswiftDispatch for architecture x86_64 

这是因为主要目标(app)试图完全针对Objective-C构build,静态库不告诉它需要包含Swift库。 这是因为我们的Build PhasesCompile Sources文件中没有任何Swift文件用于应用程序目标。

所以基本上你所要做的就是在这个编译列表中至less添加一个.swift文件,它将包含Swift库。 它甚至没有任何代码或值,它可以是一个空文件。

然后你可以开始添加Swift文件到你的“子”静态库项目。 我首先让它为你生成桥头,然后你可以移动它并改变input的内容(如果你移动的话,确保项目指向正确的文件)。

你仍然应该记住,在同一个静态库中使用Swift和Objective-C可能会有自己的问题。 我build议阅读Apple开发人员文档“同一项目中的Swift和Objective-C” ,了解如何将Objective-C导入Swift(使用桥接头)以及如何在Objective-C代码中使用Swift文件(导入为你的库生成-Swift.h )。