无法在混合语言框架中导入 CommonCrypto



我正在构建一个混合语言框架。我主要有 Swift 文件和一些 Objective-C 文件。

其中一个Objective-C文件是使用CommonCrypto的加密类。

似乎由于某种原因我无法导入它,即使我可以在 Objective-C 框架中导入它。

有人可以向我解释为什么会这样吗?

我发现的所有其他解决方案都谈到了当我需要在 Swift 框架的 Objective-C 中使用 CommonCrypto 时,如何在 Swift 中使用 CommonCrypto。

附言:

  1. 我尝试在 umbrella 头文件中添加导入,如下所示: #import <CommonCrypto/CommonCrypto.h>错误:Include of non-modular header inside framework module 'name of header'

  2. 这个答案没有解决问题:答案

我自己也遇到过这个问题。解决方法如下:

  1. 创建一个模块映射文件(这是我的文件)。
  2. 复制最新的CommonCrypto.h标头。
  3. 为这两个文件创建一个目录CommonCrypto
  4. 将目录(通过拖放)复制到项目中。
  5. 在目标框架的SWIFT_INCLUDE_PATHS下添加目录路径。

这应该允许你在任何地方使用import CommonCrypto对于 Swift,而不是 Objective-C)。

编辑:似乎我最初误读了这个问题。你想在 Objective-C 中使用 CommonCrypto,然后从 Swift 使用它。这里有一些建议:不要在你的公共头#import CommonCrypto,而只是在内部。包装你所有的加密结构,这样 CommonCrypto 就没有任何公共依赖,然后通过默认的桥接过程从 Swift 使用它。

最新更新