在我们的项目中,考虑到标准库内存的包含,我们遇到了一个问题。 Objective-C头文件中的#include <memory>
导致错误'memory' file not found
。头文件是为外部静态库导入的,当我们签出以前版本的库时,它已经工作了一次。
使用此先前版本时,同样的错误现在发生,从那时起,我们对该库的测试项目所做的唯一更改是将XCode从先前的8.3更新到版本9.2。
在使用外部库并更新XCode时是否有人遇到类似问题或者可能会给我一个提示,这可能是导致此行为的原因?
答案 0 :(得分:5)
memory
是一个仅限C ++的标头。您只能将其包含在C ++和Objective-C ++文件中。您应该将文件后缀从.m
更改为.mm
,以将Objective-C文件更改为Objective-C ++文件。
如果您想将include放入Objective-C标头并将其包含在Objective-C和Objective-C ++代码中,则应将include包含在适当的#ifdef
中,例如:
#ifdef __cplusplus
#include <memory>
#endif
注意:您仍然只能使用(Objective-)C ++中<memory>
的声明。