【问题标题】:"Use of '@import' when modules are disabled" Error - Enable Modules & Link Frameworks = YES“禁用模块时使用'@import'”错误 - 启用模块和链接框架 = YES
【发布时间】:2015-05-21 20:55:06
【问题描述】:

我有一个使用 CocoaPods 并使用“SCLAlertView-Objective-C”吊舱的项目。该 pod 使用 @import UIKit; 模块样式导入。我在目标和项目设置中都将“启用模块(C 和 Objective-C)”和“自动链接框架”设置为“是”。我仍然收到“禁用模块时使用'@import'”错误。

是否有任何东西可以阻止 Xcode 启用模块,例如使用 .pch 文件、任何链接器标志或其他我没有提到的东西?我还尝试清理项目和项目构建文件夹。这没有任何影响。

另外值得注意的是,我的项目有多个目标,并且还有一个 iOS 7.0 的部署目标。我的 Base SDK 设置为 iOS 8.3。

【问题讨论】:

  • 您找到解决方案了吗?我对谷歌分析有同样的问题。提前致谢!

标签: ios xcode module cocoapods


【解决方案1】:

我猜你的项目包含 XXX.mm 文件,但是,xcode 只启用 C 和 Objective-c 模块。

请查看此答案以供参考: Using @import in objective C in conjunction with __cplusplus

我的解决方案是将 @import xxx 修改为 #import 。

祝你好运。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 是的,只有#import 有效。由于此处描述的相同错误,无法使模块正常工作。 #import 有效
【解决方案2】:

我刚刚在我正在处理的需要使用 Firebase 的主要 ObjC++ 项目中解决了这个问题。

只需制作一个包含以下内容的 ObjC (.m) 文件。

#import <Foundation/Foundation.h>
@import Firebase; // << swap this for your specific import

就是这样,然后只需在您的.mm 文件中使用#include 来获取您需要的特定标题。对我来说,这意味着:

#include <"Firebase/Firebase.h">
#include <"FirebaseAuth/FirebaseAuth.h">

只是为了强调一点,再多的摆弄链接选项对这个"Enable Modules (C &amp; Objective-C)"已经是YES没有任何影响。升级到 XCode7 似乎没有帮助。

希望这可以帮助某人:)

【讨论】:

  • 我已经做到了。新添加的 .m Objective-C 文件中出现同样的错误。我没有 .mm 文件。检查了此线程中概述的所有内容。还是一样的错误。 Xcode 8.3
【解决方案3】:

构建选项并没有真正发挥应有的作用。我通过手动将 -fcxx-modules (Objective C++) 或 -fmodules (Objective C) 添加到“C Flags”/“C++ Flags”解决了这个问题。

为我工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2018-07-27
    • 2015-07-01
    • 1970-01-01
    • 2020-11-10
    • 2022-01-17
    相关资源
    最近更新 更多