gpt4 book ai didi

ios - 使用 Swift 和 xCode9 beta4 创建静态库

转载 作者:可可西里 更新时间:2023-11-01 01:10:59 26 4
gpt4 key购买 nike

我有一个静态库,它使用命令行工具编译一些 C 和 ObjC 代码。

我想开始在此静态库中使用 Swift,因为它有助于简化/缩短代码。 (好吧,这就是 future 吧?)

我已经搜索并了解到在静态库中不可能包含 Swift 文件,直到我看到一篇帖子说现在可以使用 xCode 9 beta 4。 ( Static Library and Swift )

我的问题是:

  • 这是真的吗?
  • 如果它现在可以工作,有人可以向我解释应该如何将 Swift 包含到静态库中吗?
  • 此功能是否已扩展到命令行工具,我的意思是我可以在命令行中执行相同的操作吗?
  • 如果可能的话,我应该怎么做?或者是否有人可以提供有关如何操作的链接?

注意:我已经探讨了如何从 C 调用 Swift 从 Objective-C 的问题。我知道需要桥接 header 和生成项目-Swift.h header 文件(连同一些设置)。

最佳答案

就在命令行工具中使用此功能而言,我认为可以做到,但需要设置某些标志。我没有亲自做过,但我找到了一些很好的答案和信息 in this article .

如前所述,从 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 和 xCode9 beta4 创建静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47157647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com