【问题标题】:Swift Compiler Error 'iostream' not found未找到 Swift 编译器错误“iostream”
【发布时间】:2015-06-06 07:43:07
【问题描述】:

我试图实现一个我在 github 上找到的项目。

https://github.com/hossamghareeb/Facebook-POP-Tutorial

在实现 .h 和 .m 文件时,我遇到了一个错误,提示 XCode 找不到我的 'iostream' 文件。

我在 SWIFT 工作,使用桥接头来使用框架。当我尝试构建原始项目时,它可以工作,但我的总是失败。

如何添加我的 iostream 文件?

提前致谢!

【问题讨论】:

  • 这些文件是 Objective C++,而不是 Objective C。我认为 swift bridging 不适用于 Objective C++ 头文件。
  • 我有机会导入那些客观的 C++ 文件吗?

标签: c++ xcode swift iostream


【解决方案1】:

Swift 桥接不支持 Objective C++ 文件。这意味着任何消耗或公开 C++ 实体的标头(如 std::vector;std::iostream)都不能添加到桥接头中。

POP 桥接头包含:

#import "POP.h"

你真的应该只在你自己的桥接头中#import那个文件,而不是尝试#import所有.h文件。

如果您需要使用 .mm 文件中定义的一些 API,这些 API 未使用 Objective C 或纯 C 标头公开,那么您必须制作自己的头文件来公开它(并且可能实现您所公开内容的后端)。

你可以在 Swift 使用的库中使用 .mm 文件的原因是因为所有 swift 使用的是这些文件的接口 - 即 .h 文件,只要这些文件是纯 C或Objective C,那么您可以使用.mm 文件中实现的代码。 .mm 文件由 Objective C++ 编译器编译 (clang++)

【讨论】:

  • 谢谢,经过大量的诅咒和 DuckDuckGoing,你的回答让我真正理解了为什么我不能使用 Objective-C++ 头文件(因为它们导入了 C++ 头文件)。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多