Xcode 11.1:找不到 iostream' 文件

问题描述 投票:0回答:5

我刚刚将我的 MacBook Pro 更新到 macOS 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 错误仍然存在。

c++ xcode iostream clang++ macos-catalina
5个回答
4
投票

我正在从命令行进行编译,此处(或其他地方)列出的答案都不适合我。

(到目前为止)似乎有效的是将以下内容添加到

.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_PATH
CPLUS_INCLUDE_PATH
是clang工具链而不是MacOS环境的选项,所以希望这个解决方案能够长期有效,不像
xcode-select --install
(它不会修复升级时的包含目录)或
ln -s ... /usr/include
(现在系统完整性保护已禁止)。


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/”


0
投票

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

0
投票

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

clang++测试.cpp

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

./a.out

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


0
投票

如果这是一个选项,请注意 CMake 将正确处理此问题。我在命令行上使用 clang++ 得到“找不到

<iostream>
”,但这个简单的项目构建得很好:

cmake_minimum_required(VERSION 3.30)

project(cpptest)

add_executable(
    cpptest
    src/test.cpp
)
#include <iostream>

int main()
{
    std::cout << "hello" << std::endl;
    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.