【问题标题】:Can't import CommonCrypto in mixed language framework无法在混合语言框架中导入 CommonCrypto
【发布时间】:2016-09-19 04:57:42
【问题描述】:

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

Objective-C 文件之一是使用 CommonCrypto 的加密类。

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

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

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

附注:

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

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

【问题讨论】:

  • 你在哪里插入导入指令?
  • @ElTomato 我的 Objective-c 类头文件.. 也尝试了伞头文件
  • 请提交bug report,这是一个常见问题,Apple 多年来一直忽略 Common Crypto,而使用 Swift 只会变得更糟。

标签: ios xcode swift ios9 ios-frameworks


【解决方案1】:

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

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

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

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

【讨论】:

  • 嘿,谢谢!但是我在哪里可以找到 CommonCrypto.h ?谢谢
  • @Fashizel:我不这么认为。我的建议是用 Swift 重写你的加密类。
  • 嘿!你能详细说明第5阶段吗?我在哪里可以找到这个选项?谢谢。
  • 转到 Xcode,点击您的目标(在侧边栏上),点击 Build Settings,然后在搜索栏中输入 SWIFT_INCLUDE_PATHS
猜你喜欢
  • 2015-04-29
  • 2014-10-04
  • 2020-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2017-02-05
  • 2020-10-13
相关资源
最近更新 更多