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

5
我正在构建一个混合语言框架。我主要有Swift文件和一些Objective-C文件。
其中一个Objective-C文件是使用CommonCrypto的加密类。
尽管我可以在Objective-C框架中导入它,但出于某种原因,似乎我无法导入它。
有人能解释一下为什么吗?
我找到的所有其他解决方案都是关于如何在Swift中使用CommonCrypto,而我需要在Swift框架中使用它的Objective-C部分。
附注:
1. 我尝试在伞头文件中添加导入,如下所示: #import <CommonCrypto/CommonCrypto.h> 错误:'name of header'框架模块内非模块化标头的包含
2. 这个答案没有解决问题:answer

你要把导入指令插入到哪里? - El Tomato
@ElTomato 我的Objective-C类头文件.. 也尝试了伞形头文件。 - Yakir Yehuda
请提交一个错误报告,这是一个常见的问题,苹果已经多年忽视了Common Crypto,而且随着Swift的出现,情况只会变得更糟。 - zaph
1个回答

3
我曾经遇到过类似的问题。以下是解决方法:
  1. 创建一个模块映射文件 (这是我的文件)。
  2. 复制最新的 CommonCrypto.h 标头文件。
  3. 为这两个文件创建一个名为 CommonCrypto 的目录。
  4. (通过拖放)将该目录复制到您的项目中。
  5. 在您的目标框架下添加目录路径到 SWIFT_INCLUDE_PATHS 中。
这样就可以在任何您想要的地方使用 import CommonCrypto (仅适用于Swift,不适用于Objective-C)。 编辑:看起来我最初误读了问题。您想在Objective-C中使用CommonCrypto,然后从Swift中使用它。这里有一些建议:不要在公共头文件中 #import CommonCrypto,而只在内部使用它。包装所有加密结构,以使没有任何公共依赖项与CommonCrypto相关,并通过默认的桥接程序从Swift中使用它。

嘿,谢谢!但我在哪里可以找到CommonCrypto.h文件?谢谢。 - Yakir Yehuda
@Fashizel:我不这么认为。我的建议是用Swift重写你的加密类。 - Vatsal Manot
嘿!你能详细说明一下第五阶段吗?我在哪里可以找到这个选项?谢谢。 - Yakir Yehuda
打开Xcode,点击侧边栏上的目标,点击Build Settings,在搜索栏中输入SWIFT_INCLUDE_PATHS - Vatsal Manot
让我们在聊天中继续这个讨论 - Yakir Yehuda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接