@import X;导致错误无法构建模块 X

Posted

技术标签:

【中文标题】@import X;导致错误无法构建模块 X【英文标题】:@import X; Causes error Could not build module X 【发布时间】:2016-03-10 16:04:12 【问题描述】:

我有一个定义为模块的自定义框架 TSUI。它同时具有 Objective-C 和 Swift 代码。如果我将它导入到 Objective-C 代码中,如下所示:

#import <TSUI/TSUI.h>

一切正常,但我只能访问 Objective-C 代码。但是,如果我将其导入为:

@import TSUI;

#import <TSUI/TSUI.h>
#import <TSUI/TSUI-Swift.h>

一切编译正常,但在 Xcode 中我收到以下错误:

在框架和应用代码中,我设置了以下构建设置:

嵌入的内容包含 Swift 代码 = YES 允许框架模块中的非模块化包含 = YES 启用模块 = 是

我已尝试清理项目,清理派生数据,但问题不断出现。如果框架不包含 Swift 代码但包含在 @import 而不是 #import 中,它也会出现。目前我认为这是一个错误。

【问题讨论】:

您是否尝试过在导入之前构建项目? 你能创建和上传一个有这个问题的小示例项目吗? 【参考方案1】:

删除您当前的导入语句 所以项目编译。

构建您的项目。

再次尝试导入。

【讨论】:

【参考方案2】:

您的模块有问题。我相信在您的 TSUI 项目中,您需要设置一个模块映射文件。您应该有一个文件,它只导入您想包含在模块中的所有文件。您可以将其命名为 TSUI-umbrella.h。在您的模块映射中,您应该将其设置为您的伞形标题。然后,当您运行 @import(导入模块)时,您将获得正确的编译。另外你可以做

#import <TSUI/TSUI-umbrella.h>

基本上

#import <ModuleName/UmbrellaHeader>

【讨论】:

以上是关于@import X;导致错误无法构建模块 X的主要内容,如果未能解决你的问题,请参考以下文章

pod spec lint 错误:无法构建模块“Protobuf”,找不到文件:#import "google/protobuf/Any.pbobjc.h"

目标x86_64的NDK构建导致错误

atomicAdd 导致错误无法启动/执行内核

解析错误“无法构建模块'UIKit'”但应用程序运行正常

使用 Vue Js 运行 Jest 测试时出现“语法错误:无法在模块外使用 import 语句”

解决 import 导入 umd 模块报错的问题