关于`Use of '@import' when C++ modules are disabled, consider using -fmodules and -fcxx-modul`

场景描述:

OC项目集成Swift三方库,在引用Swift三方库的时候出现的报错。

奇怪之处在于,.m文件是可以引用的,在.h文件是不能引用,直接报上面的错(一度使我极度郁闷,更郁闷的是第二天居然不报错了),还是把自己的解决办法说一下。

下面的两个设置也试过,在我项目中不管用(可能项目中存在.mm文件,如果存在,可能的原因是您使用objective - c + +。modules不适用c++),点击项目->targets->build settings 搜索module将
1.enable modules
2.link frameworks automatically
两个设置成YES

解决办法:

由于我要把三方写在一个公共方法里面,所以我创建了OC单例,才会在一直出现上面的报错。

于是我想到了Swift单例,通过创建Swift单例,在去OC项目中引用Swift单例,从中这样解决,以下是代码:

import UIKit

import MatomoTracker

@objc

open class MatomoTrackerObj: NSObject {

    

    static let _sharedMatomoTrackerObj = MatomoTrackerObj()

    @objc open class func sharedMatomoTrackerObj() -> MatomoTrackerObj {

        return _sharedMatomoTrackerObj

    }

    

    @objc open func getMatomoTracker() -> MatomoTracker {

        let matomoTracker = MatomoTracker(siteId: "", baseURL: URL(string: "")!)

        return matomoTracker

    }

}


版权声明:本文为liuyong0214原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。