Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Swift和xCode9 beta4创建静态库_Ios_Objective C_Swift_Static Libraries_Xcode9 - Fatal编程技术网

Ios 使用Swift和xCode9 beta4创建静态库

Ios 使用Swift和xCode9 beta4创建静态库,ios,objective-c,swift,static-libraries,xcode9,Ios,Objective C,Swift,Static Libraries,Xcode9,我有一个静态库,它使用命令行工具编译一些C和ObjC代码 我想在这个静态库中开始使用Swift,因为它有助于简化/缩短代码。(那么,这就是未来吧?) 我已经搜索过了,知道在静态库中包含Swift文件是不可能的,直到我看到一篇帖子说现在可以使用xCode 9 beta 4。() 我的问题是: 这是真的吗 如果它现在起作用了,有人能告诉我应该如何将Swift包含到静态库中吗 这个特性是否扩展到了命令行工具,我的意思是我可以在命令行中做同样的事情吗 如果可能的话,我应该怎么做?或者有没有人可以提供如

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

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

我已经搜索过了,知道在静态库中包含Swift文件是不可能的,直到我看到一篇帖子说现在可以使用xCode 9 beta 4。()

我的问题是:

  • 这是真的吗
  • 如果它现在起作用了,有人能告诉我应该如何将Swift包含到静态库中吗
  • 这个特性是否扩展到了命令行工具,我的意思是我可以在命令行中做同样的事情吗
  • 如果可能的话,我应该怎么做?或者有没有人可以提供如何做的链接

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

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

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

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

ld: library not found for -lswiftSwiftOnoneSupport for architecture x86_64

这是因为主目标(应用程序)试图仅针对Objective-C进行构建,而静态库没有告诉它需要包含Swift库。这是因为在我们的应用目标的
构建阶段
编译源代码
部分中没有任何Swift文件

所以基本上您所要做的就是在编译列表中添加至少一个
.swift
文件,它将为您提供swift库。它甚至没有任何代码或值,它可以是一个空文件

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


您仍然应该记住,在同一个静态库中使用Swift和Objective-C可能会有自己的问题。我建议阅读如何将Objective-C导入Swift(使用桥接头)以及如何在Objective-C代码中使用Swift文件(为您的库导入生成的
-Swift.h

刚刚在apple Developer论坛上找到一些相关帖子:但我仍然不知道该怎么做
ld: library not found for -lswiftDispatch for architecture x86_64