"使用' @ import'当模块被禁用时#34;错误 - 启用模块和链接框架=是

时间:2015-05-21 20:55:07

标签: ios xcode module cocoapods

我有一个使用CocoaPods的项目,并使用' SCLAlertView-Objective-C'荚。该pod使用@import UIKit;模块样式导入。我已设置"启用模块(C& Objective-C)"和#34;自动链接框架"在目标和项目设置中都为YES。我仍然在使用' @ import'当模块被禁用时#34;错误。

是否有任何可能阻止Xcode启用模块的内容,例如使用.pch文件,任何链接器标记或其他我未提及的内容?我还尝试清理项目和项目构建文件夹。这没有任何效果。

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

Screenshot of target build settings for modules

3 个答案:

答案 0 :(得分:6)

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

请看一下这个答案供您参考: Using @import in objective C in conjunction with __cplusplus

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

祝你好运。

答案 1 :(得分:6)

我刚刚在一个我正在研究的ObjC ++项目中解决了这个问题,需要使用Firebase。

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

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

即可,只需在#include文件中使用.mm即可获得所需的特定标头。对我来说意味着:

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

只是强调一点,对于这个"Enable Modules (C & Objective-C)"来说,YES已经scala> def anythingThatIsClosable(foo: { def close: Unit }): Unit = foo.close anythingThatIsClosable: (foo: AnyRef{def close: Unit})Unit scala> class ICanCloseResources { | def close = println("yay closed") | } defined class ICanCloseResources scala> anythingThatIsClosable(new ICanCloseResources()) yay closed 没有任何与链接选项混淆的问题。升级到XCode7似乎没什么帮助。

希望这有助于某人:)

答案 2 :(得分:0)

build选项并没有真正起作用。我通过将-fcxx-modules(目标C ++)或-fmodules(目标C)手动添加到“ C Flags” /“ C ++ Flags”来解决了这个问题。

为我工作。