【问题标题】:Xcode 11.1: iostream' file not foundXcode 11.1:找不到 iostream 文件
【发布时间】:2020-02-10 08:47:14
【问题描述】:

我刚刚将我的 MacBook Pro 更新到 ma​​cOS Catalina 10.15,并尝试编译和运行 C++ 命令行程序,但我有以前版本不存在的问题;

这只是代码:

#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, World!\n";
    return 0;
}

代码编译并输出预期,但 Xcode 仍然说:

fatal error: 'iostream' file not found

我尝试将 Build Settings/C++ Standard Library 更改为 libstdc++,但出现警告:

warning: include path for stdlibc++ headers not found; pass '-stdlib=libc++' on the command line to use the libc++ standard library instead

同样的 iostream 错误仍然存​​在。

【问题讨论】:

  • libstdc++ 已弃用,在 xcode 11 中不可用
  • 你更新 XCode 了吗?
  • Alan Britles 感谢您的宝贵时间,我该如何处理这个问题? XCode 上不再有 C++ 了吗?
  • molbdnilo 是的,最新版本。

标签: c++ xcode iostream clang++ macos-catalina


【解决方案1】:

我正在从命令行编译,这里(或其他地方)列出的答案都没有对我有用。

(到目前为止)似乎可行的方法是将以下内容添加到 .profile 或您的终端用于启动的任何脚本:(zsh、csh、bash 等)

export C_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include
export CPLUS_INCLUDE_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/usr/include

每当您升级操作系统时,您可能必须更改MacOSX10.15.sdk

C_INCLUDE_PATHCPLUS_INCLUDE_PATH 是 clang 工具链而不是 MacOS 环境的选项,所以希望这个解决方案能够长期工作,不像 xcode-select --install(在升级时不会修复包含目录)或 @ 987654327@(现在被系统完整性保护禁止)。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,并使用以下 youtube 视频来修复它。 https://www.youtube.com/watch?v=hrPm7tWC-BI&feature=youtu.be

    或者你可以按照这条路走。确保包括引号

    Project - Build Settings - Search Paths - Headers Search Paths,并添加以下路径: "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/"

    【讨论】:

      【解决方案3】:

      所以,我重新启动了我的笔记本电脑,现在一切似乎都很好,感谢那些试图提供帮助的人。

      【讨论】:

        【解决方案4】:

        libstdc++ 不适用于 Xcode 构建和编译时间,

        libstdc++ 适用于 iPhone 运行时


        来自@Alan Birtles 推荐的答案

        libstdc++ 支持已从 iOS 12.0 模拟器运行时中移除,但 它保留在 iOS 12.0(设备)运行时中以实现二进制兼容性 与运输应用程序。


        我在.hpp 文件中声明时遇到了这个问题。

        #include <iostream>
        #include <string>
        

        好的

        #ifdef __cplusplus
        
        #include <iostream>
        #include <string>
        
        // usage code
        #endif
        

        【讨论】:

          【解决方案5】:

          我尝试使用 Xcode 进行全新的 Catalina 安装。我将您的代码复制并粘贴到“test.cpp”中,然后运行:

          clang++ test.cpp

          在与终端中的“test.cpp”文件相同的目录中。结果是一个“a.out”文件,运行时:

          ./a.out

          输出所需的“Hello, World!”结果。希望这有一些用处(作为参考点)。

          【讨论】:

          • OP 已经说过旧版本有效。不确定这有什么帮助。
          • 在新的 Catalina 安装上尝试了同样的方法,效果很好。
          猜你喜欢
          • 2020-02-02
          • 1970-01-01
          • 2021-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-31
          相关资源
          最近更新 更多