在目标C中结合__cplusplus使用@import

时间:2013-12-20 16:47:37

标签: ios objective-c++ directive

当我尝试编译链接到使用新的@import指令的文件的Objective C ++文件(.mm)时,我遇到了一些错误。目前,我唯一的解决方案是用旧的#import指令替换@import。

还有其他解决方案,所以我仍然可以使用@import吗?

2 个答案:

答案 0 :(得分:20)

修改: 根据最新的文档,这应该工作。

this。您必须使用-fcxx-modules标记而不是-fmodules标记,但正如官方文档所示 - EXPERIMENTAL and VERY BROKEN。我根本无法让它工作......在我看来,最好坚持使用#import#include,直到该功能超出experimental阶段。

来自clang.llvm.org

-fcxx-modules
    Enable the modules feature for C++ (EXPERIMENTAL and VERY BROKEN).

答案 1 :(得分:0)

就我而言,我需要在应用程序中使用OpenCV。

我已经通过添加解决了这个问题

-fcxx-modules(目标C ++)手动设置为“其他C ++标志”

(构建设置/ Apple Clang-自定义编译器标志/其他C ++标志)

-fmodules(目标C)为“其他C标志”

(构建设置/ Apple Clang-自定义编译器标志/其他C标志)

我还需要在所有Apple的标头之前插入opencv.hpp,以修复opencv库中的期望标识符错误。 例如,在Prefix.pch中,我是这样组织的:

#ifdef __cplusplus
#include <opencv2/opencv.hpp>
#endif

#import <Availability.h> 

我正在使用:

  • Xcode-11.3
  • CocoaPods-1.9.1
  • OpenCV2-4.3.0