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

Can't import CommonCrypto in mixed language framework

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

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

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

谁能给我解释一下这是为什么?

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

P.S:

  1. 我尝试像这样在伞头文件中添加导入: #import <CommonCrypto/CommonCrypto.h> 错误:Include of non-modular header inside framework module 'name of header'

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

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

  1. 创建模块映射文件 (here's my file)。
  2. 复制最新的CommonCrypto.hheader.
  3. 为这两个文件创建目录 CommonCrypto
  4. 将目录(通过 drag-and-drop)复制到您的项目。
  5. SWIFT_INCLUDE_PATHS 下为您的目标框架添加目录路径。

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

编辑: 看来我一开始看错了问题。您想在 Objective-C 中使用 CommonCrypto,然后在 Swift 中使用它。这里有一些建议:不要 #import CommonCrypto 在你的 public header 中,而只是在内部。包装你所有的 crypto-structures,这样就没有任何对 CommonCrypto 的 public 依赖,然后只需通过默认桥接程序从 Swift 使用它。