当我尝试编译链接到使用新的@import指令的文件的Objective C ++文件(.mm)时,我遇到了一些错误。目前,我唯一的解决方案是用旧的#import指令替换@import。
还有其他解决方案,所以我仍然可以使用@import吗?
答案 0 :(得分:20)
修改强>: 根据最新的文档,这应该工作。
见this。您必须使用-fcxx-modules
标记而不是-fmodules
标记,但正如官方文档所示 - EXPERIMENTAL and VERY BROKEN
。我根本无法让它工作......在我看来,最好坚持使用#import
和#include
,直到该功能超出experimental
阶段。
-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>
我正在使用: